nohup 命令在 Linux 中用于在后台运行程序,即使关闭终端或断开连接,程序也会继续运行。默认情况下,nohup 会将输出重定向到名为 nohup.out 的文件中。为了管理这个日志文件的大小和数量,可以使用日志轮转策略。
以下是一些常见的日志轮转策略:
使用 logrotate 工具:
logrotate 是一个用于管理日志文件的系统工具,可以自动压缩、删除和创建新的日志文件。要使用 logrotate 管理 nohup.out 文件,需要创建一个配置文件,例如 /etc/logrotate.d/myapp,并添加以下内容:
/path/to/your/nohup.out {
    daily
    rotate 7
    compress
    missingok
    notifempty
    create 640 user group
}
这个配置表示每天轮转一次日志文件,保留最近 7 天的日志,压缩旧日志文件,如果日志文件不存在则不报错,如果日志文件为空则不轮转,以及创建新的日志文件时设置权限和属主。
logrotate 通常会每天运行一次,检查所有配置的日志文件并根据策略进行轮转。
使用 cron 定时任务:
如果你不想使用 logrotate,还可以使用 cron 定时任务来实现日志轮转。例如,可以创建一个 cron 任务每天凌晨压缩和重命名 nohup.out 文件:
0 0 * * * cd /path/to/your && gzip nohup.out && touch nohup.out
这个任务会在每天凌晨执行,压缩 nohup.out 文件并创建一个新的空文件。然后,你可以手动删除旧的压缩日志文件,或者使用类似的 cron 任务来自动删除它们。
在程序中实现日志轮转:
如果你有权限修改程序代码,可以考虑在程序中使用日志库(如 Python 的 logging 模块)来实现日志轮转。这样,程序会在达到指定大小或时间间隔时自动创建新的日志文件,并删除旧的日志文件。
总之,有多种方法可以实现 nohup 命令的日志轮转策略。你可以根据自己的需求和环境选择合适的方法。