V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Actrace
V2EX  ›  Linux

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

  •  
  •   Actrace · 2018-07-22 11:09:53 +08:00 · 4086 次点击
    这是一个创建于 2322 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在一台新装 CentOS7 的服务器上部署新服务,结果发现一个有趣的现象:一旦 rc.local 脚本执行完毕,在 rc.local 脚本中运行(nohup)起来的进程就会被杀掉,包括这些进程(nohup 运行的 shell 脚本)创建的其他进程(比如 nginx )。

    这是怎么一回事呢,求各位大神解答?
    第 1 条附言  ·  2018-07-22 12:58:35 +08:00
    问题解决,感谢各位的支持。
    经过测试,发现在 /etc/rc.local 的末尾加上 exit 0 之后就表现正常了。可以用 systemctl status rc-local 查看到状态是已完成(此前为异常退出)。

    不过仍然疑惑的是这套部署脚本在其他的 centos7 上运行正常,难道是因为 systemd 的版本不一样?
    6 条回复    2018-07-28 11:32:21 +08:00
    wwqgtxx
        1
    wwqgtxx  
       2018-07-22 11:13:19 +08:00 via iPhone
    这貌似是 systemd 的行为,你可能需要把启动代码写成 systemd service 文件
    shakespark
        2
    shakespark  
       2018-07-22 11:43:09 +08:00
    没加&?
    Actrace
        3
    Actrace  
    OP
       2018-07-22 11:56:51 +08:00
    @wwqgtxx
    @shakespark
    加了 & ,并且这个脚本在其他 centos7 系统上工作正常。所以我搞不清楚什么情况。
    AllOfMe
        4
    AllOfMe  
       2018-07-22 12:40:52 +08:00
    貌似 nohup 和 &都是不行的,我以前遇到过。像这种开机自启动最好写一个 service,或者在 crontab 里面用 @reboot 来进行执行,这样应该就可以了。
    doubleflower
        5
    doubleflower  
       2018-07-22 13:18:15 +08:00
    systemd-run 了解一下,可以代替 nohup,输出还会记录到 journal 方便查阅,也方便按名字 kill
    比如
    sudo systemd-run --unit sleep sleep 5m
    neoska
        6
    neoska  
       2018-07-28 11:32:21 +08:00
    执行 nohup sh XXXX &
    然后点叉叉关掉这个终端,重新开一个终端登上去看可以发现运行的进程全没了
    再执行 nohup sh XXXXX &
    然后用 exit 命令退出这个终端,再新开个终端登上去,可以看到这个进程和它脚本里启动的进程都还在继续运行。
    我怀疑你这个也是因为这个原因。我之前遇到这类似的问题搜了半天资料。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5402 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 09:28 · PVG 17:28 · LAX 01:28 · JFK 04:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.