我在我自己的机器上由 ssh 启动的服务器上有一堆进程。现在大约三个小时,我机器的 Ubuntu 挂了,我看不到任何其他选项,只能重新启动。有没有办法让服务器上的进程保持活动状态?我对我的机器和服务器都有 root 访问权限。
提前致谢
有几种方法可以实现这一点:
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
列出可用的会话。