如何在Linux中使用nohup命令将日志输出到指定文件?

在 Linux/Unix 系统中,使用 nohup 命令运行程序时,可以通过重定向将输出(包括标准输出和标准错误输出)写入指定的日志文件。

如何在Linux中使用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
  • 在后台运行,释放终端

其他常用变体:

  1. 分别记录 stdout 和 stderr:
nohup python train.py > output.log 2> error.log &
  1. 只记录输出,不显示也不保存(丢弃):
nohup python train.py > /dev/null 2>&1 &
  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
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
露淮辞钰的头像 - 鹿快
评论 抢沙发

请登录后发表评论

    暂无评论内容