在一台新装 CentOS7 的服务器上部署新服务,结果发现一个有趣的现象:一旦 rc.local 脚本执行完毕,在 rc.local 脚本中运行(nohup)起来的进程就会被杀掉,包括这些进程(nohup 运行的 shell 脚本)创建的其他进程(比如 nginx )。
这是怎么一回事呢,求各位大神解答?
这是怎么一回事呢,求各位大神解答?
1
wwqgtxx Jul 22, 2018 via iPhone
这貌似是 systemd 的行为,你可能需要把启动代码写成 systemd service 文件
|
2
shakespark Jul 22, 2018
没加&?
|
3
Actrace OP |
4
AllOfMe Jul 22, 2018
貌似 nohup 和 &都是不行的,我以前遇到过。像这种开机自启动最好写一个 service,或者在 crontab 里面用 @reboot 来进行执行,这样应该就可以了。
|
5
doubleflower Jul 22, 2018
systemd-run 了解一下,可以代替 nohup,输出还会记录到 journal 方便查阅,也方便按名字 kill
比如 sudo systemd-run --unit sleep sleep 5m |
6
neoska Jul 28, 2018
执行 nohup sh XXXX &
然后点叉叉关掉这个终端,重新开一个终端登上去看可以发现运行的进程全没了 再执行 nohup sh XXXXX & 然后用 exit 命令退出这个终端,再新开个终端登上去,可以看到这个进程和它脚本里启动的进程都还在继续运行。 我怀疑你这个也是因为这个原因。我之前遇到这类似的问题搜了半天资料。。 |