我有同样的问题这里但甚至超越这一点。
如果我注销/退出 SSH 连接,我需要我的程序在后台运行。退出前,我输入bg
并jobs
检查后台运行任务,但退出 SSH 后,程序不运行,当我关闭 SSH 窗口时它会关闭。
如果我想在关闭 SSH 窗口后程序仍运行,该怎么办?我确实使用了nohup
screen
但它也不起作用,还是我遗漏了什么?
答案1
使用时screen
你需要分离退出之前使用CTRL+A+ 。Dssh
或者,如果你想直接用屏幕运行进程,你可以使用
screen -dmSL [session name] [commands]
-d
启动 screen 会话并立即断开连接-m
强制创建新的屏幕会话-S
让你给会话命名-L
打开日志记录~/screenlog.0
例子:
screen -dmSL workstuff myscript.sh
然后您可以:
稍后继续使用 screen -x workstuff
或者
检查日志文件 less -r ~/screenlog.0
答案2
使用tmux
。我甚至不确定screen
它是否仍在积极开发中。这有点像个人偏好问题,但作为 的用户tmux
,我可以证明它大约在 5 分钟内就可以完成设置,并且运行完美。
在基于 Debian 的系统上(在远程机器上):
sudo apt-get install tmux
然后按 Enter 键进入tmux
,运行所需的任何进程,然后按+ Ctrl(这将离开 tmux 会话)。然后,您可以退出 SSH。BD
当你需要返回/再次检查时,启动 SSH,然后输入tmux attach
。它将带你回到你的tmux
会话。
tmux
有更多功能,详情请见此处。但这应该可以解决您的当前问题。
祝你好运!
答案3
最后,我使用以下方法解决了它screen
:
在屏幕模式下,使用 将其分离CtrlAD。然后您可以关闭 SSH 窗口。
答案4
nohup 使用:下面的第一个命令在后台启动程序 abcd,以便后续的注销不会停止它。
$ nohup abcd &
$ 退出