如何使用 ssh 在 Unix 机器上运行命令并在命令完成之前退出?
例如,如果我输入
ssh localhost 'sleep 60 &'
Run Code Online (Sandbox Code Playgroud)
ssh 挂在我的终端上,直到 sleep 完成,即使 sleep 在后台运行。
小智 30
SSH 有一个 -f 开关,它与在您的客户端上使用 nohup 完全相同,但可以使 ssh 要求输入密码。像这样使用它:
ssh localhost -f 'command'
Run Code Online (Sandbox Code Playgroud)
但是:SSH 仍然会在后台运行,因此如果您在服务器上的命令完成之前关闭客户端,它将被中止。如果想在执行命令后关闭ssh连接,可以在服务器端使用screen:
ssh localhost -f 'screen -d -m sleep 60'
Run Code Online (Sandbox Code Playgroud)
使用 nohup、stdout/stderr 重定向,并在后台运行命令:
nohup ssh localhost 'sleep 60' >/dev/null 2>/dev/null &
Run Code Online (Sandbox Code Playgroud)
编辑:或者甚至更好,只需使用 ssh 的 -f 参数:
ssh -f localhost 'sleep 60'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
48078 次 |
最近记录: |