前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nohup的使用及SIGHUP信号

nohup的使用及SIGHUP信号

作者头像
KINGYT
发布2023-03-15 13:39:23
3550
发布2023-03-15 13:39:23
举报

当我们关闭shell时,由该shell开启的程序也会被退出,即使这个程序是在后台运行的。

➜ ~ sleep 100 & [1] 23023 ➜ ~ jobs -l [1] + 23023 running sleep 100 ➜ ~ ps -ef | grep sleep yt 23023 22888 0 19:14 pts/0 00:00:00 sleep 100 ➜ ~ # 关闭shell再开个新的 ➜ ~ ps -ef | grep sleep

可以看到,当我们关闭shell的后,sleep进程也退出了。

原因就是在shell退出时,会给在该shell内开启的进程发送SIGHUP,如果指定程序没有处理这个signal,就会执行默认行为,也就是退出。

我们再用nohup开启试下:

➜ ~ nohup sleep 100 & [1] 23597 nohup: ignoring input and appending output to 'nohup.out' ➜ ~ jobs -l [1] + 23597 running nohup sleep 100 ➜ ~ ps -ef | grep sleep yt 23597 23065 0 19:22 pts/0 00:00:00 sleep 100 ➜ ~ # 关闭shell再开个新的 ➜ ~ ps -ef | grep sleep yt 23597 1259 0 19:22 ? 00:00:00 sleep 100 ➜ ~ kill 23597 ➜ ~ ps -ef | grep sleep

我们可以看到,即使shell退出了,sleep也没有退出,因为nohup使sleep进程忽略了SIGHUP信号。

注:以上测试是在zsh中进行的。在bash中测试时,关闭bash并没有给sleep进程发送SIGHUP。

更多signal的信息请看Linux下的signal机制

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 卯时卯刻 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档