如何使用 ssh 在远程 Unix 机器上运行命令并在命令完成之前退出?

如何使用 ssh 在远程 Unix 机器上运行命令并在命令完成之前退出?

如何使用 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您可能想稍后再回来查看进度或输出。

相关内容