如何通过SSH运行脚本,当我关闭连接时不会结束?

Jak*_*old 23 ubuntu ssh bash nohup gnu-screen

我需要运行脚本,这需要很长时间才能执行,或者我只想让它永远运行。我不能只通过 SSH 连接到我的机器,因为当我断开连接时它会停止运行。

有没有办法运行不依赖于启动它的 shell 的脚本?

我正在使用 Ubuntu 9.04。

Kyl*_*ndt 27

您可以在该命令之前使用 nohup 命令运行该命令。您也可以在“屏幕”中运行它,这将允许您重新连接终端。

例如:

ssh mySever 'nohup bash myscript.sh'
Run Code Online (Sandbox Code Playgroud)

或者只是 ssh 进入并运行 nohup 命令。即使断开连接,它也应该继续运行。这是因为 nohup 会拦截 SIGHUP 信号(挂断)。

Screen 有点复杂,但在 20 分钟内可能需要您学习基础知识,它是最有用的工具之一。 这是一个教程


小智 9

我总是只使用 nohup。如果我关心输出,我会将它重定向到一个日志文件,否则我将它发送到 /dev/null。

例子:

nohup scp file.tar.gz root@someserver:/var/tmp > /dev/null 2>&1 &
Run Code Online (Sandbox Code Playgroud)

这会将其置于后台,输出将转到 /dev/null,并且如果您注销,则它不受 HUP 信号的影响。您还可以使用某些 shell(如 bash)“否认”该作业,以便它不会连接到您的会话。

disown %1
Run Code Online (Sandbox Code Playgroud)

  • +1 表示拒绝 - 当您忘记使用 nohup 运行时非常有用 (3认同)

Dis*_*sco 8

安装屏幕: apt-get install screen

然后使用简单的启动: screen

man screen获得键绑定。