我在自己的机器上通过 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
列出可用的会话。