shell的exec命令


工作中遇到運維人員掛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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM