我假设这个脚本是一个长期运行的脚本.在这种情况下,您需要在终止ssh会话时从要关闭的终端分离进程.
其实你已经完成了大部分工作的重新分配都stdout
与stderr
对/dev/null
,但是你没有做到这一点的stdin
.
我使用了以下测试用例:
ssh localhost
nohup sleep 10m &> /dev/null &
^D
# hangs
Run Code Online (Sandbox Code Playgroud)
而
ssh localhost
nohup sleep 10m &> /dev/null < /dev/null &
^D
# exits
Run Code Online (Sandbox Code Playgroud)
我第二个建议使用优秀的gnu screen
,将为您提供此服务,等等.
哦,您是否考虑过直接运行脚本而不是shell?即:
ssh user@host script.sh
Run Code Online (Sandbox Code Playgroud)