首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nohup诉Nohup &

Nohup诉Nohup &
EN

Stack Overflow用户
提问于 2019-03-11 20:45:49
回答 2查看 2.5K关注 0票数 4

我很难理解使用nohup运行脚本与使用nohup和'&‘之间的区别。我明白,对于后者,如果我想杀死它,我可以直接杀死进程id。但是对于前者,我是否可以点击"CTRL+C“来删除脚本。所以如果我要运行以下命令

nohup script.sh

然后点击"CTRL+C“退出,该脚本是否仍在运行?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-11 20:55:39

如果你能明白这是怎么回事会更好。

nohup集是忽略HUP信号的过程。就这样。没有比这更重要的了。进程何时接收HUP信号?通常当终端注销时。HUP信号的默认操作是终止。

hitting "CTRL+C"只向进程发送INT信号。默认操作(您也可以trap "echo something" INT重写它)是终止进程。

nohup sh script.sh在接收到INT信号时将终止(假设script.sh没有专门处理INT信号),因为它在接收INT信号时没有设置自定义操作,并且将忽略HUP信号。

在命令后面放置的&在后台运行它。作为一个单独的过程。所以sh script.sh &在后台运行sh。如果您向它发送INT信号,该进程仍将终止,只是CTRL+C不会将它发送到该进程,而是发送到前台的进程。您仍然可以使用kill命令发送它。当终端退出时,当进程接收到HUP信号时,命令仍将终止。

因此,运行nohup sh script.sh &将在后台运行进程,忽略终端退出时发送的信号。但它仍然会在接收到INT信号时终止。在终端中按下CTRL+C不会将其发送到此进程,因为shell将术语信号发送给前台进程,而不是后台进程。

票数 12
EN

Stack Overflow用户

发布于 2019-03-11 20:49:20

是。-的优点是您不必按Ctrl+C,例如,https://www.computerhope.com/unix/unohup.htm

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55110150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档