Nohup 对比 Nohup &
Nohup vs Nohup &
我无法理解仅对 运行 脚本使用 nohup 与使用 nohup 和“&”之间的区别。我理解,对于后者,如果我想杀死它,我可以杀死进程id。但是对于前者,我是否可以直接点击 "CTRL+C" 来杀死脚本。所以如果我要 运行 下面的命令
nohup sh script.sh
然后通过点击 "CTRL+C" 退出它,该脚本是否仍然是 运行ning?
是的。 & 的优点是您不必按 Ctrl+C
例如参见 [=10=]
如果你能明白是怎么回事就更好了。
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 &
运行s sh
在后台。如果您向它发送 INT
信号,该进程仍将终止,只是 CTRL+C
不会将其发送到 那个 进程,而是发送到前台处理。您仍然可以使用 kill
命令发送它。当终端退出时,当进程收到 HUP
信号时,命令仍将终止。
所以 运行ning nohup sh script.sh &
将 运行 后台进程并忽略终端退出时发送的信号。但它仍然会在收到 INT
信号时终止。仅在终端中按 CTRL+C
不会将其发送到此进程,因为 shell 将术语信号发送到前台进程,而不是后台进程。
我无法理解仅对 运行 脚本使用 nohup 与使用 nohup 和“&”之间的区别。我理解,对于后者,如果我想杀死它,我可以杀死进程id。但是对于前者,我是否可以直接点击 "CTRL+C" 来杀死脚本。所以如果我要 运行 下面的命令
nohup sh script.sh
然后通过点击 "CTRL+C" 退出它,该脚本是否仍然是 运行ning?
是的。 & 的优点是您不必按 Ctrl+C 例如参见 [=10=]
如果你能明白是怎么回事就更好了。
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 &
运行s sh
在后台。如果您向它发送 INT
信号,该进程仍将终止,只是 CTRL+C
不会将其发送到 那个 进程,而是发送到前台处理。您仍然可以使用 kill
命令发送它。当终端退出时,当进程收到 HUP
信号时,命令仍将终止。
所以 运行ning nohup sh script.sh &
将 运行 后台进程并忽略终端退出时发送的信号。但它仍然会在收到 INT
信号时终止。仅在终端中按 CTRL+C
不会将其发送到此进程,因为 shell 将术语信号发送到前台进程,而不是后台进程。