nohup命令可使进程在终端退出后继续运行,通过忽略SIGHUP信号实现;基本用法为nohup command &,默认输出日志至nohup.out;可通过> output.log 2>&1 &自定义日志路径;无需日志时可重定向至/dev/NULL;配合ps、grep、kill等命令管理进程,确保任务稳定执行。
在linux命令行中,nohup 命令用于让进程在退出终端后依然保持运行。它通过忽略挂起信号(SIGHUP)来实现这一点,是远程服务器上长时间任务执行的常用手段。掌握其使用技巧,能有效提升运维效率和任务稳定性。
基本用法与后台运行
最简单的 nohup 用法是配合 & 符号将命令放入后台执行:
nohup command &
例如启动一个长时间脚本:
执行后,系统会提示输出日志重定向到当前目录下的 nohup.out 文件。即使关闭终端,进程仍继续运行。
自定义输出文件路径
默认输出可能造成混乱,特别是多个任务同时运行时。可以通过重定向标准输出和错误流指定日志文件:
nohup command > output.log 2>&1 &
说明:
- > output.log:将标准输出写入指定文件
- 2>&1:将标准错误合并到标准输出
- &:使进程在后台运行
这样便于追踪日志,也方便后续排查问题。
避免输出日志(静默模式)
某些场景下不需要保存输出,比如定时任务或守护进程,可将输出重定向到 /dev/null:
nohup command > /dev/null 2>&1 &
这能防止 nohup.out 文件占用磁盘空间,尤其适合自动化脚本。
结合 ps 和 kill 管理进程
nohup 启动的进程不会自动消失,需手动管理。常用命令包括:
- 查看进程:ps aux | grep command
- 结束进程:kill PID(替换为实际进程ID)
也可通过 pgrep 快速查找:
pgrep -f train.py
找到PID后即可安全终止任务。
基本上就这些。合理使用 nohup 能确保关键任务持续运行,配合日志管理和进程监控,可大幅提升操作可靠性。