![断开远程连接时保持正在运行的进程处于活动状态](https://linux22.com/image/1116709/%E6%96%AD%E5%BC%80%E8%BF%9C%E7%A8%8B%E8%BF%9E%E6%8E%A5%E6%97%B6%E4%BF%9D%E6%8C%81%E6%AD%A3%E5%9C%A8%E8%BF%90%E8%A1%8C%E7%9A%84%E8%BF%9B%E7%A8%8B%E5%A4%84%E4%BA%8E%E6%B4%BB%E5%8A%A8%E7%8A%B6%E6%80%81.png)
我在自己的机器上通过 ssh 启动了服务器上的一堆进程。现在大约三个小时了,我的机器的 Ubuntu 已经挂起,除了重新启动,我没有看到任何其他选择。有什么方法可以让服务器上的进程保持活动状态?我对我的机器和服务器都有 root 访问权限。
提前致谢
答案1
有几种方法可以实现这一点:
nohup
用于nohup
运行命令,以便进程不会挂断(注销)。
例如:nohup command > /path/to/log 2>&1 &
笔记:上述命令
SIGHUP
在后台运行,并将stdout
/重定向stderr
到指定的文件。
setsid
和disown
使用setsid
和disown
基本上这允许进程作为新会话运行(init
/PID 1 作为其父级),以便用户注销不会影响它。您可以阅读手册了解更多信息。
推荐方法
使用tmux
或screen
tmux
在或会话中运行命令/应用程序screen
。我个人更喜欢tmux
。从技术上讲,它在主机(远程服务器)上运行服务器,只要守护进程不死,所有会话信息都会被保留。
笔记:如果断开连接,只需再次 ssh 到服务器并运行
tmux attach -t <target-session>
即可返回会话。用于tmux ls
列出可用的会话。