Linux上的服务在后台运行的技巧
最近在服务器上线部署一个web项目,怎么让它在关掉远程连接终端以后平稳运行呢?
当用户注销(logout)或者网络断开时,终端会收到 HUP(hangup)信号从而关闭其所有子进程。因此,我们的解决办法就有两种途径:要么让进程忽略 HUP 信号,要么让进程运行在新的会话里从而成为不属于此终端的子进程。
最开始的解决方案
也许你会想到服务运行命令后面加上&,这样就能后台运行,但是这样当关闭xshell连接时,后台服务也会下线,所以我使用的是nohup
命令的用途就是让提交的命令忽略 hangup 信号
很简单的使用方法:在要执行的命令前加上 nohup 就行比如
nohup ping www.ibm.com
这样完了后我就关了终端,服务依旧平稳运行,可是后来莫名奇妙的挂了???
到现在的解决方案
虽然不清楚为什么服务挂了,但是这并不妨碍我换个方法重新跑起来服务,那就是screen
,能够在一个真实终端下运行多个全屏的伪终端,大量这种命令需要在稳定的后台里运行就可以用这个;
yum -y install screen # 安装screen
screen -dmS sessionname # 建立一个处于断开模式下的会话,sessionname可更改为自己的服务名
screen -list # 列出所有会话,查看是否建立会话
screen -r session name # 重新连接指定会话,运行自己的服务
# 用快捷键CTRL + a + d 来暂时断开当前会话。退出终端连接,查看服务是否稳定运行
目前情况下,只要系统不挂服务就会平稳运行啦!如果想要系统开机即自启服务的话可以学习systemctl
;
如果服务不挂我是不会再来看这个滴,简单几行达到目的就行啦,溜了溜了!!!
文章参考:
- https://www.linuxprobe.com/process-run-in-background.html
- https://blog.csdn.net/Pan_peter/article/details/128875714