之间有什么区别
$ nohup foo
Run Code Online (Sandbox Code Playgroud)
和
$ foo &
Run Code Online (Sandbox Code Playgroud)
和
$ foo &
$ disown
Run Code Online (Sandbox Code Playgroud) disown
导致 shell 在 shell 终止时不向其不承认的作业发送 SIGHUP,并且
从 shell 的作业控制中删除被拒绝的作业。
第一个是第二个的结果吗?换句话说,如果从 shell 启动的进程以任何方式从 shell 的作业控制中删除,当 shell 终止时,shell 是否不会向该进程发送 SIGHUP?
disown -h
仍然使进程处于 shell 的作业控制之下。这是否意味着disown -h
使进程仍然接收来自shell发送的SIGHUP,但将进程的SIGHUP动作设置为“忽略”?这听起来类似于nohup
.
$ sleep 123 & disown -h
[1] 26103
$ jobs
[1]+ Running sleep 123 &
$ fg 1
sleep 123
$ ^Z
[1]+ Stopped sleep 125
$ bg 1
[1]+ sleep 123 &
$ exit
$ ps aux | grep sleep
t 26103 0.0 0.0 14584 824 ? S 15:19 0:00 …
Run Code Online (Sandbox Code Playgroud)