shell的exec命令
2017-03-02 21:38 轩脉刃 阅读(13044) 评论(0) 编辑 收藏 举报工作中遇到运维人员挂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
实时了解作者更多技术文章,技术心得,请关注微信公众号“轩脉刃的刀光剑影”
本文基于署名-非商业性使用 3.0许可协议发布,欢迎转载,演绎,但是必须保留本文的署名叶剑峰(包含链接http://www.cnblogs.com/yjf512/),且不得用于商业目的。如您有任何疑问或者授权方面的协商,请与我联系。