nohup
命令在Linux系统中用于 不挂断地运行命令 ,即使在关闭终端或退出登录后,命令也会继续执行。以下是关于nohup
命令的详细解释:
- 基本用法 :
-
nohup
命令可以单独使用,也可以在命令后面加上&
符号将其放到后台运行。 -
例如:
nohup sh test.sh &
将在后台运行test.sh
脚本,并将输出重定向到当前目录下的nohup.out
文件。
- 输出重定向 :
-
默认情况下,
nohup
命令的输出会被重定向到当前目录下的nohup.out
文件。 -
如果
nohup.out
文件不可写,输出将被重定向到用户主目录下的nohup.out
文件。 -
可以使用重定向符号
>
将输出重定向到其他文件,例如:nohup command > myout.file 2>&1 &
将标准输出和标准错误都重定向到myout.file
文件中。
- 忽略挂断信号 :
-
nohup
命令会忽略所有的SIGHUP
信号,这样即使控制终端关闭,命令也会继续运行。 -
SIGHUP
信号通常在终端关闭时发送给进程,用于通知进程终止。
- 后台任务管理 :
-
使用
nohup
命令启动的后台任务可以通过jobs
命令列出,例如:jobs
列出当前会话中的所有后台作业。 -
可以通过
kill
命令终止后台任务,例如:kill %1
终止第一个后台任务,或者使用kill 12345
终止指定PID的任务。
-
配合
disown
命令 :
-
如果已经使用
nohup
在后台启动了任务,但不想它受到终端关闭的影响,可以使用disown
命令解除任务与当前终端的关联。 -
例如:
disown -h %1
将任务%1
从当前shell的作业列表中移除,使其不受终端关闭的影响。
- 常用选项 :
-
-c
:在使用nohup
命令时,如果同时使用了-c
选项,那么指定的命令将在启动后立即停止,这个选项通常用于测试nohup
命令是否生效。 -
-f
:在使用nohup
命令时,如果同时使用了-f
选项,那么指定的命令将以静默模式运行,即不会向标准输出和标准错误输出任何信息。 -
-q
:在使用nohup
命令时,如果同时使用了-q
选项,那么指定的命令将以静音模式运行,即不会向标准输出和标准错误输出任何信息,这个选项与-f
选项类似,但会关闭标准输出和标准错误。
建议
-
使用
nohup
命令时,建议将输出重定向到文件,以便于后续查看和管理日志。 -
如果需要查看后台任务的详细信息,可以使用
ps
命令结合grep
命令进行查找。 -
在需要长时间运行的任务中,可以考虑使用
nohup
结合disown
命令,以确保任务在终端关闭后仍能继续运行。