shell的exec命令

工作中遇到运维人员挂supervisor的时候建议启动使用命令control.sh start, 并且在control.sh 里面启动命令:

exec -c ./bin/xxx -f config/xxx.conf

使用man看下说明,可以看到exec是一个内部命令,

136188-20170302213655266-1204253432.png

如这里说的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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值