1.问题描述
使用upstart脚本启动进程pro1,pro1内部调用shell命令service s1 start启动了s1,此时调用stop pro1停止pro1时,s1也会终止
2.原因
因为p1启动了s1,过程如下:
2.1 p1启动service进程,service进程继承了p1的pgid
2.2 service进程启动s1进程,s1进程继承了service进程的pgid,即p1的pgid
2.3 调用stop pro1命令,upstar会发送kill命令去杀pro1所在的整个进程组,而s1属于此进程组,所以也会被杀掉
3.解决方案
pro1不要直接调用shell命令,使用ssh user@127.0.0.1 service s1 start命令启动
这样相当于是sshd进程创建了一个新的bash,去调用service命令,s1启动后与pro1不在同一个进程组,调用stop命令时即不会被杀掉