1.概述
nohup
在工作中,我们很经常跑一个很重要的程序,有时候这个程序需要跑好几个小时,甚至需要几天,这个时候如果我们退出终端,或者网络不好连接中断,那么程序就会被中止。而这个情况肯定不是我们想看到的,我们希望即使终端关闭,程序依然可以在跑。
这时我们就可以使用 nohup 这个命令。
nohup 命令是英语词组no hangup 的缩写,意思是不挂断,也就是指程序不退出。这个命令会使程序忽略 HUP 信号,保证程序能够正常进行。HUP 信号有些人可能比较陌生,它是在终端被中止的时候向它所关联的进程所发出的信号,进程收到这个信号后就会中止运行。所以如果你不希望进程被这个信号干掉的话,就可以忽略这个信号。而 nohup 命令做的就是这个事情。
&
用途:在后台运行
一般两个一起用
nohup command &
注意
&的意思是在后台运行, 什么意思呢? 意思是说, 当你在执行 path& 的时候, 即使你用ctrl C, 那么a.out照样运行(因为对SIGINT信号免疫)。但是要注意, 如果你直接关掉shell后, 那么, a.out进程同样消失。 可见, &的后台并不硬(因为对SIGHUP信号不免疫)。
nohup的意思是忽略SIGHUP信号, 什么意思呢?当运行nohup patht的时候, 关闭shell, 那么path进程还是存在的(对SIGHUP信号免疫)。 但是, 要注意, 如果你直接在shell中用Ctrl+C, 那么, path进程也是会消失的(因为对SIGINT信号不免疫)