CentOS 7 会在 rc.local 执行完所有命令后 kill 掉后台进程?

2018-07-22 11:09:53 +08:00
 Actrace
在一台新装 CentOS7 的服务器上部署新服务,结果发现一个有趣的现象:一旦 rc.local 脚本执行完毕,在 rc.local 脚本中运行(nohup)起来的进程就会被杀掉,包括这些进程(nohup 运行的 shell 脚本)创建的其他进程(比如 nginx )。

这是怎么一回事呢,求各位大神解答?
4099 次点击
所在节点    Linux
6 条回复
wwqgtxx
2018-07-22 11:13:19 +08:00
这貌似是 systemd 的行为,你可能需要把启动代码写成 systemd service 文件
shakespark
2018-07-22 11:43:09 +08:00
没加&?
Actrace
2018-07-22 11:56:51 +08:00
@wwqgtxx
@shakespark
加了 & ,并且这个脚本在其他 centos7 系统上工作正常。所以我搞不清楚什么情况。
AllOfMe
2018-07-22 12:40:52 +08:00
貌似 nohup 和 &都是不行的,我以前遇到过。像这种开机自启动最好写一个 service,或者在 crontab 里面用 @reboot 来进行执行,这样应该就可以了。
doubleflower
2018-07-22 13:18:15 +08:00
systemd-run 了解一下,可以代替 nohup,输出还会记录到 journal 方便查阅,也方便按名字 kill
比如
sudo systemd-run --unit sleep sleep 5m
neoska
2018-07-28 11:32:21 +08:00
执行 nohup sh XXXX &
然后点叉叉关掉这个终端,重新开一个终端登上去看可以发现运行的进程全没了
再执行 nohup sh XXXXX &
然后用 exit 命令退出这个终端,再新开个终端登上去,可以看到这个进程和它脚本里启动的进程都还在继续运行。
我怀疑你这个也是因为这个原因。我之前遇到这类似的问题搜了半天资料。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/473033

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX