阅读量:66
在 CentOS 系统中,使用 nohup 命令运行程序时,默认情况下不会进行日志轮转。为了实现日志轮转,你可以使用 logrotate 工具来管理日志文件。以下是如何设置 logrotate 来轮转 nohup 生成的日志文件的步骤:
-
创建一个日志文件: 假设你使用
nohup运行的程序将日志输出到/var/log/myapp.log,你可以手动创建这个文件(如果它还不存在):sudo touch /var/log/myapp.log sudo chown your_user:your_group /var/log/myapp.log -
创建一个 logrotate 配置文件: 在
/etc/logrotate.d/目录下创建一个新的配置文件,例如myapp:sudo nano /etc/logrotate.d/myapp -
编辑 logrotate 配置文件: 在打开的文件中添加以下内容:
/var/log/myapp.log { daily rotate 7 compress delaycompress missingok notifempty create 640 your_user your_group }解释一下这些选项:
daily: 每天轮转一次日志文件。rotate 7: 保留7个轮转的日志文件。compress: 轮转后的日志文件进行压缩。delaycompress: 延迟压缩,直到下一次轮转。missingok: 如果日志文件不存在,不会报错。notifempty: 如果日志文件为空,不进行轮转。create 640 your_user your_group: 轮转后创建新的日志文件,权限为640,属主和属组为指定的用户和组。
-
测试 logrotate 配置: 你可以手动测试
logrotate配置是否正确:sudo logrotate -f /etc/logrotate.d/myapp这会强制执行一次日志轮转,并根据配置文件中的设置处理日志文件。
-
确保 logrotate 定期运行:
logrotate通常由 cron 定期执行。你可以检查/etc/cron.daily/logrotate文件来确保logrotate每天运行:sudo nano /etc/cron.daily/logrotate确保文件内容如下:
#!/bin/sh /usr/sbin/logrotate /etc/logrotate.conf EXITVALUE=$? if [ $EXITVALUE != 0 ]; then /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]" fi exit 0
通过以上步骤,你可以确保 nohup 生成的日志文件能够被定期轮转和管理。