在CentOS系统中,使用nohup
命令在后台运行程序时,通常会将程序的输出重定向到一个名为nohup.out
的文件中。然而,对于长时间运行的程序,为了更好地管理日志文件的大小和数量,可以使用logrotate
工具进行日志轮转。
nohup命令基本用法
nohup
命令用于在后台运行程序,并使程序在用户退出登录后继续运行。- 基本语法:
nohup command > output.log 2>&1 &
,其中command
是要运行的程序,output.log
是输出日志的文件名。
logrotate简介
logrotate
是一个用于管理日志文件的工具,它可以自动切割、压缩、删除旧的日志文件,并创建新的日志文件。logrotate
通常由cron
定时任务自动执行,以便定期进行日志轮转。
logrotate配置文件
/etc/logrotate.conf
是主配置文件,定义了日志轮转的基本策略。/etc/logrotate.d/
目录下可以存放针对特定应用程序的日志轮转配置文件。
logrotate常用选项
-d
:详细显示指令执行过程。-f
:强制实施日志轮转。-v
:在执行日志轮转时显示详细信息。-m
:指定发送邮件的程序。create
:轮转后创建新文件。rotate
:指定保留的日志文件数量。dateext
:使用日期作为日志文件的后缀。compress
:压缩旧的日志文件。
自定义nohup日志轮转策略
在使用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
脚本中包含重新加载服务的命令,以确保日志轮转后服务能够继续记录日志。
请注意,上述配置仅为示例,实际应用时需要根据具体需求调整日志文件路径、轮转周期、权限等参数。