在 Linux/Unix 系统中,使用 nohup 命令运行程序时,可以通过重定向将输出(包括标准输出和标准错误输出)写入指定的日志文件。
基本语法:
nohup command > /path/to/logfile.log 2>&1 &
各部分解释:
- nohup: 使进程忽略 SIGHUP 信号,即使终端关闭也能继续运行。
- command: 你要执行的命令或脚本,例如 python app.py 或 ./myprogram。
- >: 重定向标准输出(stdout)到指定文件。
- /path/to/logfile.log: 你希望保存日志的文件路径。
- 2>&1: 将标准错误(stderr)重定向到标准输出(即也写入同一个日志文件)。
- &: 在后台运行该命令。
示例:
nohup python train.py > training.log 2>&1 &
这会:
- 启动 train.py 脚本
- 忽略挂断信号
- 将所有输出(包括 print、print error 等)写入当前目录下的 training.log
- 在后台运行,释放终端
其他常用变体:
- 分别记录 stdout 和 stderr:
nohup python train.py > output.log 2> error.log &
- 只记录输出,不显示也不保存(丢弃):
nohup python train.py > /dev/null 2>&1 &
- 追加模式(不覆盖原有日志):
nohup python train.py >> training.log 2>&1 &
(注意是 >>)
查看日志:
tail -f training.log
可实时查看日志输出。
注意事项:
- 确保目标目录有写权限。
- 使用绝对路径(如 /home/user/logs/app.log)更安全,避免因工作目录变化导致日志位置不确定。
- nohup 默认会在当前目录生成 nohup.out,如果你没有重定向输出。一旦你做了重定向,就不会生成 nohup.out。
✅ 推荐做法:总是显式指定日志文件路径并重定向 2>&1。
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END
暂无评论内容