使用此Linux命令更新日志文件。日志非常适合找出您的应用程序正在做什么或解决可能出现的问题。几乎我们处理的每个应用程序都会生成日志,我们希望我们自己开发的应用程序也能生成日志。日志越详细,我们掌握的信息就越多。但如果无人看管,日志可能会增长到无法管理的大小,这反过来又会成为它们自己的问题。所以最好裁剪它们,保留我们需要的,然后归档其余的。基本功能logrotate实用程序在管理日志方面非常出色。它可以轮换日志、压缩日志、电子邮件日志、删除日志、归档日志,并在您需要时开始记录最新的日志。运行logrotate非常简单——只需运行logrotate-vsstate-fileconfig-file。上面命令中,v选项开启verbose模式,s指定状态文件,最后一个config-file为配置文件,可以指定需要做什么。实践演练让我们看一下在我们的系统上静默运行的logrotate配置,它管理我们在/var/log目录中找到的大量日志。查看该目录中的当前文件。你看到很多*.[number].gz文件了吗?这就是logrotate正在做的事情。您可以在/etc/logrotate.d/rsyslog下找到此配置文件。我的配置文件如下所示:/var/log/syslog{rotate7dailymissingoknotifemptydelaycompresscompresspostrotatereloadrsyslog>/dev/null2>&1||真正的结束脚本}/var/log/mail.info/var/log/mail.warn/var/log/mail.err/var/log/mail.log/var/log/daemon.log/var/log/kern。log/var/log/auth.log/var/log/user.log/var/log/lpr.log/var/log/cron.log/var/log/debug/var/log/messages{每周轮换4次missingoknotifemptycompressdelaycompresssharedscriptspostrotatereloadrsyslog>/dev/null2>&1||trueendscript}该文件首先定义了循环/var/log/syslog文件的指令,这些指令用大括号括起来。它们的含义如下:rotate7:记录最后7次旋转。然后开始删除多余的。daily:每天轮转日志,与rotate7一起使用,表示将保留过去7天的日志。其他选项包括每周、每月、每年。还有一个大小参数,如果日志文件的大小超过指定限制(例如大小10k、大小10M、大小10G等),它将轮换日志文件。如果未指定任何内容,日志将在运行logrotate时轮换。您甚至可以在cron中运行logrotate以在更具体的时间间隔内使用它。missingok:如果日志文件丢失也没关系。不要恐慌。notifempty:如果日志文件为空,则不旋转。compress:开启压缩,使用nocompress关闭。delaycompress:如果开启压缩,延迟压缩直到下一轮。这允许存在至少一个旋转但未压缩的文件。如果您希望昨天的日志保持未压缩状态以进行故障排除,则此配置很有用。如果某些程序在重新启动/重新加载之前仍可能写入旧文件,这也很有用,例如阿帕奇。postrotate/endscript:旋转后运行本节脚本。帮助清理。还有一个prerotate/endscript用于在旋转开始之前执行操作。你能弄清楚下一节对上面配置中提到的所有文件做了什么吗?第二部分中唯一的额外参数是sharedscripts,它告诉logrotate在所有日志轮转完成之前不要运行postrotate/endscript中的部分。它可以防止脚本在每次旋转时都执行,并且仅在最后一次旋转完成时才执行。值得关注的新内容我使用以下配置来处理我系统上Nginx的访问和错误日??志。/var/log/nginx/access.log/var/log/nginx/error.log{size1missingoknotifemptycreate544www-dataadmrotate30compressdelaycompressdateextdateformat-%Y-%m-%d-%ssharedscriptsextension.logpostrotateservicenginxreloadendscript}上面的脚本可以用下面的命令运行:logrotate-vsstate-file/tmp/logrotate第一次运行这个命令会得到以下输出:readingconfigfile/tmp/logrotateextensionis现在。logHandling1logsrotatingpattern:/var/log/nginx/access.log/var/log/nginx/error.log1bytes(30rotations)空日志文件不轮换,旧日志被删除考虑日志/var/log/nginx/access.log日志需要轮转consideringlog/var/log/nginx/error.loglogdoesnotneedrotatingrotatinglog/var/log/nginx/access.log,log->rotateCountis30Converted'-%Y-%m-%d-%s'->'-%Y-%m-%d-%s'dateext后缀'-2021-08-27-1485508250'glob模式'-[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'globfindinglogstocompressfailedglobfindingoldrotatedlogsfailedredening/var/log/nginx/access.logto/var/log/nginx/access-2021-08-27-1485508250.logcreatingnew/var/log/nginx/access.logmode=0544uid=33gid=4runningpostrotatescript*Reloadingnginxconfigurationnginx第二次运行它:readingconfigfile/tmp/logrotateextensionisnow.logHandling1logsrotatingpattern:/var/log/nginx/access.log/var/log/nginx/error.log1bytes(30rotations)空日志文件不轮转,旧日志被移除consideringlog/var/log/nginx/access.loglogneedsrotatingconsideringlog/var/log/nginx/error.log日志不需要rotatingrotatinglog/var/log/nginx/access.log,log->rotateCountis30Converted'-%Y-%m-%d-%s'->'-%Y-%m-%d-%s'dateext后缀'-2021-08-27-1485508280'glob模式'-[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'压缩日志:/bin/gziprenaming/var/log/nginx/access.log到/var/log/nginx/access-2021-08-27-1485508280.logcreatingnew/var/log/nginx/access.logmode=0544uid=33gid=4runningpostrotatescript*Reloadingnginxconfigurationnginx第三次运行它:读取配置文件/tmp/logrotateextensionisnow.logHandling1logsrotatingpattern:/var/log/nginx/access.log/var/log/nginx/error.log1bytes(30rotations)emptylogfiles不轮换,旧日志被删除consideringlog/var/log/nginx/access.loglogneedsrotatingconsideringlog/var/log/nginx/error.loglogdoesnotneedrotatingrotatinglog/var/log/nginx/access.log,log->rotateCountis30Converted'-%Y-%m-%d-%s'->'-%Y-%m-%d-%s'dateextsuffix'-2021-08-27-1485508316'globpattern'-[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'压缩日志:/bin/gziprenaming/var/log/nginx/access.log到/var/log/nginx/access-2021-08-27-1485508316.log创建新的/var/log/nginx/access.logmode=0544uid=33gid=4runningpostrotatescript*Reloadingnginxconfigurationnginxstate文件内容如下:logrotatestate--version2"/var/log/nginx/error.log"2021-08-27-9:0:0"/var/log/nginx/access.log"2021-08-27-9:11:56下载Linuxlogrotate备忘单
