一、命令简介
nohup
用于在退出终端时保持进程在后台运行。
帮助
nohup --help
在线示例
curl cheat.sh/nohup
二、命令参数
nohup 命令
-
nohup
命令会忽略挂断(hangup)信号(SIGHUP
),允许执行的命令在用户注销后继续运行。 - 通常与
&
符号结合使用,将命令放入后台执行。
选项
-
-n
: 将标准输出追加到文件而不是覆盖。 -
-p
: 不将进程 ID 写入到nohup.out
文件中。
三、命令示例
基本用法:
启动一个命令,忽略挂断信号,并将输出重定向到nohup.out
文件:nohup ./mycommand &
重定向输出到指定文件:
将输出重定向到名为output.log
的文件:nohup ./mycommand > output.log &
追加输出到文件:
使用-n
选项将输出追加到output.log
文件:nohup -n ./mycommand >> output.log &
不写入进程 ID:
使用-p
选项不将进程 ID 写入到输出文件:nohup -p ./mycommand > output.log &
在特定目录运行命令:
切换到特定目录,然后在该目录下运行命令:cd /path/to/directory nohup ./mycommand &
使用日期时间作为输出文件名:
将输出重定向到以当前日期时间命名的文件:nohup ./mycommand > "mycommand_$(date +%Y%m%d_%H%M%S).log" &
注意事项
nohup
不会影响标准错误输出。如果需要,你可以单独重定向标准错误输出:nohup ./mycommand > output.log 2>&1 &
这将标准错误也重定向到
output.log
文件。如果不指定输出文件,
nohup
默认将输出重定向到当前工作目录下的nohup.out
文件。如果在执行
nohup
命令时没有指定&
,则命令将在前台运行,即使nohup
会使它忽略挂断信号。
nohup
命令在执行时不会将进程放入后台,所以需要与&
结合使用来真正地使进程在后台运行。如果你的终端会话被关闭,使用
nohup
的进程通常不会受到影响,但如果你的系统关闭或重启,则进程会终止。对于确保进程在系统重启后继续运行,你可能需要使用其他工具,如systemd
、cron
的@reboot
功能或init.d
脚本。
本文共 474 个字数,平均阅读时长 ≈ 2分钟
评论 (0)