【问题标题】:tmux session closes when ssh terminal closesssh 终端关闭时 tmux 会话关闭
【发布时间】:2014-05-11 14:20:09
【问题描述】:

我要做什么: 我正在尝试使用 ssh 在远程机器上执行几个 bash 命令,我希望这些命令即使在执行过程中关闭 ssh-session 后也能完成执行。

到目前为止我做了什么: 我正在使用Putty连接到ssh(使用putty的原因之一是一台机器是windows,远程机器是mac-os,我需要一些方法来通过Python命令启动ssh)。我正在传递 command.txt 文件,它包含我要执行的所有命令。

putty -ssh start-ts@ip.000.001.101 -m command.txt ( not real ip)

command.txt:看起来像这样:

export PATH=$PATH:/usr/local/bin
echo $PATH; sleep 1
tmux -c 'queue.sh'
sleep 100

连接到 ssh 后,为了确保我的脚本/命令即使在另一台机器上关闭 ssh-session 后也能继续在远程机器上运行,我正在使用 'tmux'

但问题是: 即使在使用 tmux 之后,由 queue.sh 调用的进程也会在我关闭 ssh-session 时终止。

我也试过了

export PATH=$PATH:/usr/local/bin
echo $PATH; sleep 1
tmux
queue.sh
sleep 100

做同样的事情。

我也尝试过: 如果我只是使用 ssh 传递以下命令(在 command.txt 中)

export PATH=$PATH:/usr/local/bin
echo $PATH; sleep 1
tmux

然后在 tmux 终端中手动输入 queue.sh,这样我就可以关闭 ssh-terminal 并且远程机器继续执行进程。

有什么建议吗? 我希望能够通过脚本文件传递所有内容并保持进程在远程机器(mac-os)上运行,即使在另一台机器上关闭 ssh-session 之后也是如此。

谢谢

【问题讨论】:

    标签: bash ssh tmux


    【解决方案1】:

    -c 选项实际上并不启动新会话;如果您使用tmux 作为登录shell,它是为了与其他shell 兼容。为了在tmux 会话中运行queue.sh,请尝试使用

    启动tmux
    tmux new-session queue.sh
    

    【讨论】:

    • 太棒了!谢谢你,切普纳。 (我没有足够的评分来评价这个答案。)
    • @user2259784 你现在做。如果您也可以接受这个答案,那就太好了,假设它解决了您的问题,因此可以将问题标记为已解决。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    • 2017-03-30
    • 1970-01-01
    相关资源
    最近更新 更多