退出SSH会话但不是脚本

时间:2013-09-04 20:15:08

标签: bash unix ssh

在我的bash脚本中,我这样做:

ssh me9@some_mad_server.com;
cd ~/apple;
echo "Before Exit"
exit
echo "After Exit"

我从未在退出前或退出后看到。我可以理解为什么我可能看不到Before Exist,因为我在那个阶段的脚本是在另一个控制台中。但是我很困惑,如果退出意味着我的脚本结束,那么为什么退出后永远不会被记录。

任何帮助表示感谢。

2 个答案:

答案 0 :(得分:3)

要在远程主机上执行一系列命令,您需要在命令行上将它们传递给ssh,而不是在 ssh调用后执行它们。像这样:

ssh me9@some_mad_server.com '
    cd ~/apple
    echo "Before Exit"
'
echo "After Exit"

这使用多行字符串来传递多个命令。到达字符串末尾时隐式exit

重要的是,引用字符串中的命令在远程主机上执行,而最终echo在本地服务器上执行。为了清楚起见,我缩进了远程命令。

答案 1 :(得分:1)

您可以使用屏幕。

screen -d -m <command>

使用屏幕-r再次附加到该屏幕

screen -r <screen ID>