gpt4 book ai didi

linux - Nohup 对比 Nohup &

转载 作者:太空宇宙 更新时间:2023-11-04 10:02:27 27 4
gpt4 key购买 nike

我无法理解仅使用 nohup 运行脚本与使用 nohup 和“&”之间的区别。我理解,对于后者,如果我想杀死它,我可以杀死进程id。但是对于前者,我可以直接按“CTRL+C”来杀死脚本吗?所以如果我要运行下面的命令

nohup sh script.sh

然后按“CTRL+C”退出它,该脚本是否仍在运行?

最佳答案

如果你能理解发生了什么就更好了。

nohup 设置进程忽略HUP 信号。就这样。仅此而已。进程何时收到 HUP 信号?通常在终端注销时。 HUP 信号的默认操作是终止。

点击“CTRL+C” 只会向进程发送 INT 信号。默认操作(您也可以 trap "echo something"INT 覆盖它)是终止进程。

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

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

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

关于linux - Nohup 对比 Nohup &,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55110150/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com