关闭 SSH 时继续 SSH 后台任务/作业

Hue*_*uei 34 linux ssh nohup tasks

我和这里有同样的问题,但甚至不止于此

如果我注销/退出 SSH 连接,我需要我的程序在后台运行。退出前,我输入bgjobs检查后台运行任务,但退出SSH后,程序没有运行,当我关闭SSH窗口时它关闭。

如果我希望我的程序在关闭 SSH 窗口后仍然运行,我该怎么办?我确实使用过nohup screen但它也不起作用,或者我错过了什么?

jus*_*ing 59

当您使用时,screen您需要在退出之前使用+分离CTRL+ADssh

或者,如果你想直接用 screen 运行一个进程,你可以使用

screen -dmSL [session name] [commands]
Run Code Online (Sandbox Code Playgroud)
  • -d 启动一个屏幕会话并立即与其分离
  • -m 强制创建新的屏幕会话
  • -S 允许您为会话命名
  • -L 打开登录到 ~/screenlog.0

例子:

screen -dmSL workstuff myscript.sh
Run Code Online (Sandbox Code Playgroud)

然后您可以:

稍后恢复使用 screen -x workstuff

或者

检查日志文件 less -r ~/screenlog.0


eva*_*vid 15

使用tmux. 我什至不确定是否screen仍在积极开发中。这是一种偏好,但作为使用 的人tmux,我可以证明它在大约 5 分钟内设置完毕,并且运行良好。

在基于 Debian 的系统上(在远程机器上):

sudo apt-get install tmux

然后进入tmux进入,运行任何处理需要,并命中Ctrl+B然后D(这使TMUX会话)。然后,您可以注销 SSH。

当您需要返回/再次检查时,启动 SSH,然后输入tmux attach. 它将带您回到您的tmux会话。

tmux具有更多功能,详见此处。但是,这应该可以解决您当前的问题。

祝你好运!


Hue*_*uei 7

最后,我使用screen以下方法解决了它:

在屏幕模式下,使用 分离它CtrlAD。然后您可以关闭 SSH 窗口。


Ash*_*ldr 5

nohup 使用:下面的第一个命令在后台启动程序 abcd,这样后续的注销不会停止它。

$ nohup abcd &

$退出