当ssh终端关闭时,tmux会话关闭

时间:2014-04-01 01:30:48

标签: bash ssh tmux

我想做的事情: 我正在尝试使用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之后,一旦我关闭ssh-session,queue.sh调用的进程就会终止。

我也试过

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之后也是如此。

由于

1 个答案:

答案 0 :(得分:3)

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

启动tmux
tmux new-session queue.sh