如何使用 ssh 在 Unix 机器上运行命令并在命令完成之前退出?
例如,如果我输入
ssh localhost 'sleep 60 &'
ssh 会挂在我的终端上直到睡眠完成,即使睡眠在后台运行。
答案1
SSH 有一个 -f 开关,其功能与在客户端上使用 nohup 完全相同,但 ssh 可能会要求输入密码。使用方式如下:
ssh localhost -f 'command'
但:SSH 仍将在后台运行,因此如果您在服务器上的命令完成之前关闭客户端,它将被中止。如果您希望在执行命令后关闭 ssh 连接,您可以在服务器端使用 screen:
ssh localhost -f 'screen -d -m sleep 60'
答案2
使用nohup、stdout/stderr重定向,并在后台运行命令:
nohup ssh localhost 'sleep 60' >/dev/null 2>/dev/null &
编辑:或者更好的是,只需使用 ssh 的 -f 参数:
ssh -f localhost 'sleep 60'
答案3
或者使用登录后ssh
,开始screen
您可能想稍后再回来查看进度或输出。