【IT168 专稿】nohup ---nohup 的用途就是让提交的命令忽略 hangup 信号。
[root@RHEL5 ~]# nohup ping aix43 &
[1] 5634
[root@RHEL5 ~]# nohup: appending output to `nohup.out'
[root@RHEL5 ~]# ps -ef | grep 5634
root 5634 5551 0 11:23 pts/1 00:00:00 ping aix43
root 5636 5551 0 11:23 pts/1 00:00:00 grep 5634
setsid ---nohup 无疑能通过忽略 HUP 信号来使我们的进程避免中途被中断,但如果我们换个角度思考,如果我们的进程不属于接受 HUP 信号的终端的子进程,那么自然也就不会受到 HUP 信号的影响了。
[root@RHEL5 ~]# setsid ping aix43
[root@RHEL5 ~]# ps -ef | grep ping
root 5670 1 0 11:26 ? 00:00:00 ping aix43
root 5708 5677 0 11:28 pts/1 00:00:00 grep ping
& ---当我们将"&"也放入"()"内之后,我们就会发现所提交的作业并不在作业列表中,也就是说,是无法通过jobs来查看的。让我们来看看为什么这样就能躲过 HUP 信号的影响吧。
[root@RHEL5 ~]# (ping aix43 &)
[root@RHEL5 ~]# ps -ef | grep ping
root 5761 1 0 11:35 ? 00:00:00 ping aix43
root 5765 5728 0 11:36 pts/2 00:00:00 grep ping
disown ---