在CentOS系统中,使用nohup命令在后台运行程序时,通常会将程序的输出重定向到一个名为nohup.out的文件中。然而,对于长时间运行的程序,为了更好地管理日志文件的大小和数量,可以使用logrotate工具进行日志轮转。
nohup命令用于在后台运行程序,并使程序在用户退出登录后继续运行。nohup command > output.log 2>&1 &,其中command是要运行的程序,output.log是输出日志的文件名。logrotate是一个用于管理日志文件的工具,它可以自动切割、压缩、删除旧的日志文件,并创建新的日志文件。logrotate通常由cron定时任务自动执行,以便定期进行日志轮转。/etc/logrotate.conf是主配置文件,定义了日志轮转的基本策略。/etc/logrotate.d/目录下可以存放针对特定应用程序的日志轮转配置文件。-d:详细显示指令执行过程。-f:强制实施日志轮转。-v:在执行日志轮转时显示详细信息。-m:指定发送邮件的程序。create:轮转后创建新文件。rotate:指定保留的日志文件数量。dateext:使用日期作为日志文件的后缀。compress:压缩旧的日志文件。在使用nohup命令时,可以通过重定向将日志输出到特定的文件,并结合logrotate进行日志轮转。例如,可以使用以下命令将test.sh脚本的输出日志保存到test.log文件中,并配置logrotate按天轮转日志文件:
nohup sh test.sh > test.log 2>&1 &
然后,创建或编辑/etc/logrotate.d/test.log文件,添加以下内容:
/path/to/test.log {
daily
rotate 7
create 0644 root root
compress
missingok
notifempty
sharedscripts
postrotate
/etc/init.d/test.sh reload > /dev/null
endscript
}
在这个配置中,daily表示每天轮转一次日志文件,rotate 7表示保留7个备份文件,create 0644 root root指定新文件的权限,compress表示压缩旧的日志文件,missingok表示如果日志文件不存在则不轮转,notifempty表示如果日志文件为空则不轮转,sharedscripts表示轮转后执行postrotate脚本,postrotate脚本中包含重新加载服务的命令,以确保日志轮转后服务能够继续记录日志。
请注意,上述配置仅为示例,实际应用时需要根据具体需求调整日志文件路径、轮转周期、权限等参数。