退出ssh -tt会话

3
我正在远程ssh主机上执行以下脚本:
ssh -tt $ USER@somehost 'bash -s' <./myscript.sh
注意伪终端-tt开关。
我的问题是在脚本运行结束后,ssh会话不会结束。输入exit也没有任何作用。如何使其退出?

这个ssh会话是否在远程系统上启动一个进程,该进程应在ssh断开连接后继续运行? - Kenster
@Kenster 最终是这样,但我目前正在使用一些简单的命令进行测试,比如 pwd - Alex
将您的问题编辑一下,包括一个产生问题的“myscript.sh”样例内容会很有帮助。 - Kenster
当bash读取文件末尾时,它会退出并关闭会话。如果你的脚本中有一些交互式内容在等待其他事件,你需要找到另外一种方法来终止它。 - Jakuje
2个回答

7
您缺少一个exit语句。
我怀疑需要exit的原因是,当您强制分配pty时,pty期望输入是终端...从终端读取EOF并不意味着“再也没有数据了”,就像对于管道/文件一样 - 它仅仅意味着“当前用户没有更多的输入” - 因此会出现停顿...它正在等待进一步的输入。
这个输入脚本(myscript.sh)会“挂起”:
echo "Hello World..."

这不行:

echo "Hello World..."
exit 0

2
在没有进一步的信息的情况下,即使按照问题中的方式执行,以下脚本也会在执行后正确退出。如果这不起作用,请提供一个示例,证明它不起作用。
echo Hello World
pwd
exit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接