> 文章列表 > Linux上的服务在后台运行的技巧

Linux上的服务在后台运行的技巧

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