supervisor 管理进程异常
问题描述:
- supervisor管理im 服务进程启动和停止异常。根据问题现象推理,im的启动多了一层shell,初步推断shell多一层封装对supervisor来说是黑盒子。
问题校验:
- 通过supervisor启动服务发现会有两个进程,一个会控制服务shell的父进程和一个服务本身的子进程。
解决方案:
- 让shell和服务启动同属于一个进程,而不fork子进程。把shell里封装启动服务改为exec 'java.....'
其它
主进程t shell
#!/bin/sh
echo $$
echo 'i am main process'
echo mypid is :$$
echo 'run sub process by shell'
/root/t1.sh shell
echo 'run sub process by source'
. /root/t1.sh source
echo 'run sub process by exec'
exec /root/t1.sh exec
子进程t1 shell
#!/bin/sh
echo 'im t1 process'
echo "run method is:$1"
echo mypid is: $$
执行结果说明
[root@ghd_6_78 ~]# cat t1.sh
#!/bin/sh
echo 'im t1 process'
echo "run method is:$1"
echo mypid is: $$
[root@ghd_6_78 ~]# ./t.sh
8953
i am main process
mypid is :8953
run sub process by shell
im t1 process
run method is:shell
mypid is: 8954
run sub process by source
im t1 process
run method is:source
mypid is: 8953
run sub process by exec
im t1 process
run method is:exec
mypid is: 8953