工作中遇到運維人員掛supervisor的時候建議啟動使用命令control.sh start, 並且在control.sh 里面啟動命令:
exec -c ./bin/xxx -f config/xxx.conf
使用man看下說明,可以看到exec是一個內部命令,
如這里說的exec是將要exec的命令替換當前的這個命令。所以這個意思是
如果你使用了exec之后,你當前的這個shell的pid就沒有了,被exec的命令所替代。
我們創建一個control.sh:
sleep 10
當我們運行 sh control.sh的時候,我們使用
watch "ps aux|grep control"
來觀察control.sh的進程
發現是有的:
vagrant 7044 0.0 0.2 106068 1300
pts/0 S+ 06:41 0:00 sh control.sh
但是我們control.sh修改為:
exec sleep 10
發現我們grep不出來control進程。
這個實驗能說明exec是用新的進程去代替原先的進程,原先的進程就消失了。
參考:
http://blog.sina.com.cn/s/blog_6238358c0100sg5n.html
http://www.cnblogs.com/zhaoyl/archive/2012/07/07/2580749.html