Linux nohup命令
nohup
命令用于执行另一个程序或者命令并将其参数指定为忽略所有SIGHUP
(中断)信号。SIGHUP
是当前控制终端关闭时发送到进程的信号。
通常,当您通过SSH运行命令时,如果连接断开,或者退出SSH,SSH会话将终止,并且终端执行的所有命令都将停止。如果你不想被某一程序被终止,可以使用nohup
命令。它将忽略所有中断信号,命令程序将继续运行。
如何使用nohup命令
该nohup
命令的语法如下:
nohup COMMAND [ARGS]
该命令不接受除标准--help
和以外的任何其他选项--version
。
我们来看看下面的例子:
nohup mycommand
nohup: ignoring input and appending output to 'nohup.out'
nohup
将mycommand
在前台运行并将命令输出重定向到nohup.out
文件。此文件创建在当前工作目录中。如果运行该命令的用户没有当前工作目录的读写权限,则将nohup.out
文件写到用户的Home家目录中。此时如果您注销或关闭终端,mycommand
命令不会被终止
在后台运行命令
nohup
在前台使用不是很有用,因为在命令完成之前,您将无法在当前Tty与shell交互
要nohup
在后台运行,请在命令末尾添加&
符号:
nohup mycommand &
在后台运行命令时,将在终端上打印shell作业ID和进程ID:
[1] 25177
您可以使用作业ID使用fg
命令将命令放在前台运行。
如果由于某种原因要终止进程,请使用kill
命令后跟进程ID:
kill -9 25132
将输出重定向到文件
默认情况下,nohup
会将所有输出重定向到nohup.out
文件。如果要将命令输出重定向到其他文件,可以使用shell标准重定向。
例如,要将标准输出和标准错误重定向到mycommand.out
您将使用的:
nohup mycommand > mycommand.out 2>&1 &
将标准输出和标准错误重定向到不同的文件:
nohup mycommand > mycommand.out 2> mycommand.err &
标准输出和标准错误都不写到文件中
nohup mycommand > /dev/null 2>&1 &
到目前为止,您应该很好地理解如何使用该nohup
命令来防止在注销或退出终端时终止命令
以上是 Linux nohup命令 的全部内容, 来源链接: utcz.com/z/506916.html