使用nohup command &可让程序在后台持续运行,如nohup python train.py &,其中nohup防止终端关闭时进程被终止,&将进程放入后台,默认输出重定向至nohup.out;可通过> output.log 2>&1 &自定义输出路径;用jobs或ps aux | grep查看进程,kill PID终止进程;注意权限、日志清理及必要时选用screen/tmux。
在 Linux 中,& 和 nohup 常用于让程序在后台持续运行,尤其适用于远程 SSH 会话中执行长时间任务。单独使用 & 虽可将进程放入后台,但终端关闭后进程仍可能被终止。结合 nohup 可避免这一问题。
基本用法:nohup 与 & 结合
标准语法如下:
nohup command &
例如:
这条命令的作用是:
- nohup 捕获 SIGHUP 信号,防止终端关闭时进程被挂起
- & 将进程放到后台运行,不占用当前终端
- 输出默认重定向到当前目录下的 nohup.out 文件
重定向输出
默认情况下,nohup 会将 stdout 和 stderr 合并输出到 nohup.out。你可以自定义输出位置:
nohup python train.py > output.log 2>&1 &
说明:
- > output.log:标准输出写入 output.log
- 2>&1:错误输出重定向到标准输出(即也写入 log)
- &:最后的 & 确保进程在后台运行
查看和管理后台进程
使用 jobs 或 ps 查看运行中的任务:
jobs -l
或查看系统级进程:
ps aux | grep python
如需终止进程,使用 kill:
kill PID
注意事项
常见问题和建议:
- 确保脚本具有可执行权限或明确调用解释器(如 python、bash)
- nohup 不保证程序“永不中断”,只是忽略挂起信号,程序自身仍可能出错退出
- 若需更高级的后台管理,建议使用 screen 或 tmux
- nohup.out 文件可能持续增长,注意定期清理或重定向到指定日志文件
基本上就这些。合理使用 nohup 配合 &,能有效保障任务在后台稳定运行。