命令介绍
- nohup 命令运行由 Command参数和任何相关的 Arg参数指定的命令,忽略所有挂断(SIGHUP)信号。也就是说,即使退出终端,也会一直运行。
- 需要注意的是该命令并不会让其他命令后台运行,因此在运行该命令后,该终端就不允许任何输入了【标准输入】。
使用场景
如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束(典型场景是1个shell命令执行时间较长,Xshell/SecureCRT终端可能退出导致shell命令执行终止,就有必要使用nohup命令保证退出终端后,shell命令继续执行),那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。在缺省情况下该作业的所有输出都被重定向到该目录下一个名为nohup.out的文件中。
nohup命令的使用
&的使用
&可以让一个命令后台运行。但是终端退出,该命令还是会停止运行的。
nohup与&的结合使用
1、 只使用&的情况
date > patch.txt &
#运行上面的命令后,因为该命令执行时间很短,所以立刻Done了
echo "it can input"
#但是还是可以进行标准输入的
在这里插入图片描述
2、使用nohup的情况
nohup sleep 2000 #可以看到是不允许进行标准输入的,直接按ctrl+c退出才可以输入
3、使用nohup和&的情况
nohup sleep 2000 & #可以看到是不允许进行标准输入的,直接按ctrl+c退出才可以输入
#可以看到,是允许输入的
#关闭的时候,直接
kill -9 1483741
小结
- & 只是将进程放到后台运行,但进程仍然会受到终端关闭的影响。
- nohup 将进程放到后台运行,并忽略挂起信号,使进程在终端关闭后继续运行。
- 使用 & 后,终端可以继续接收其他输入。
- 使用 nohup(不带 &)时,终端会被占用,无法接收其他输入。