[好用的 Script] 以日期区分的 log rotate

在回应 哪里还有这本书 "Shell Programming 333个应用範例技巧大全集?" 时,回去翻自己过去常用的一些资源,有些在装系统的时候还会拿出来用一用,有些是好久没有去造访了;在此就把一些自己在系统管理上,或说在Command Line环境下,常会用的一些工具或资源,备忘出来,省得往旧机器里面找资料。
newsyslog
这是我最常用也觉得最好用的shell script,是 Solaris 上都会有的一个 log rotate 的script,
通常在 Solaris 里是在:/usr/lib/newsyslog ,基本上内容都是长这个样子:http://web.mit.edu/shutkin/MacData_1124b/afs/net/system/sun4c_41/rsp.01/usr/lib/newsyslog。
虽然有 logrotate, cronlog 等现成的工具,但自己希望做到每天一个档,像 access.log.20090520 ,就比较不容易或麻烦,甚至要改 apache 上相关 log 的设定,而只要改写 newsyslog 成为:

#!/bin/shLOGDIR=/where/nginx/logsif test -d $LOGDIRthen        cd $LOGDIR        for LOG in access.log error.log        do        if test -s $LOG        then                test -f $LOG && mv $LOG  $LOG.`date +%Y%m%d`                /bin/cp -f /dev/null $LOG                chmod 644    $LOG        fi        donechown nginx.nginx access.log error.log#chmod 644 access.log error.logfikill -HUP `cat /var/run/nginx.pid`

然后再用 crontab 中,每天晚上12点前来rotate,就可以每天一个档了。

58 23 * * * /where/my/newsyslog 2>&1

所以不管在任何版本的 Linux, Unix, Solaris, BSD,此 script 都适用。

常指定在有查询log需要,且每天的量也较大时,这样的分档就很方便。
当要查某字串,是否在哪些天里有,透过 grep, fgrep, egrep 抓出来。
较常用在 mail log,procmail log, spam filter log, web log。

若有邦友对 logrotate, cronlog 或其他相关 log rotate 的程式,也可以容易地来做出以日期来区别的话,也请分享一下其作法。


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章