技术解析

CentOS 7 会在 rc.local 执行完所有命令后 kill 掉后台进程?
0
2021-06-23 15:01:50
idczone
在一台新装 CentOS7 的服务器上部署新服务,结果发现一个有趣的现象:一旦 rc.local 脚本执行完毕,在 rc.local 脚本中运行(nohup)起来的进程就会被杀掉,包括这些进程(nohup 运行的 shell 脚本)创建的其他进程(比如 nginx )。

这是怎么一回事呢,求各位大神解答?
这貌似是 systemd 的行为,你可能需要把启动代码写成 systemd service 文件

没加&?



加了 & ,并且这个脚本在其他 centos7 系统上工作正常。所以我搞不清楚什么情况。

貌似 nohup 和 &都是不行的,我以前遇到过。像这种开机自启动最好写一个 service,或者在 crontab 里面用 来进行执行,这样应该就可以了。

systemd-run 了解一下,可以代替 nohup,输出还会记录到 journal 方便查阅,也方便按名字 kill
比如
sudo systemd-run --unit sleep sleep 5m

执行 nohup sh XXXX &
然后点叉叉关掉这个终端,重新开一个终端登上去看可以发现运行的进程全没了
再执行 nohup sh XXXXX &
然后用 exit 命令退出这个终端,再新开个终端登上去,可以看到这个进程和它脚本里启动的进程都还在继续运行。
我怀疑你这个也是因为这个原因。我之前遇到这类似的问题搜了半天资料。。

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服