系统里面有一些纪录档 (logfiles),纪录档会随系统的使用时间而成长,内定
的纪录档,例如 /var/log/messages 涨到一个程度就会被系统处理压缩起来,
而处理这些纪录档的程序纪录在 /etc/newsyslog.conf 之中。
newsyslog.conf 是一个纪录 cron 计划运行的 newsyslog 程序的配置文件。
newsyslog指出了什麽时候日志文件需要打包或者重新整理。比如 logfile 被
移动到 logfile.0,logfile.0 被移动到 logfile.1 等等。另外,日志文件
可以用 gzip 来压缩,它们是这样的命名格式:logfile.0.gz,logfile.1.gz
等等。
logfilename:纪录档的位置
owner:group:此档案的拥有者和群组
mode:纪录档的权限
count:表示会保留几次的纪录,超过就把比它还旧的纪录砍了
size:纪录档的大小
when:何时处理这个档案
flags:记载此 log 档应该要以何种程序来处理,Z表示用 gzip 去压缩,
B 表示二位元档或特殊的格式,N 表示并无采取任何程序处理。
[/pid_file]:这个栏位一般不填,系统预设对每个纪录档做处理时就
会送出 SIGHUP 讯息给 syslogd 让他去执行纪录档的处理;
但假如自己在 newsyslog 中加入非预设要对某些纪录档作
处理的执行时,通常都会加上要 KILL-HUP 的 pid 档,才能
正常执行。
以下是 FreeBSD 4.9 Release中系统预设的 cron,可以在 newsyslog.conf 看到:
# logfilename [owner:group] mode count size when flags [/pid_file]
[sig_num]
/var/log/cron 600 3 100 * Z
/var/log/amd.log 644 7 100 * Z
/var/log/auth.log 600 7 100 * Z
/var/log/kerberos.log 600 7 100 * Z
/var/log/lpd-errs 644 7 100 * Z
/var/log/maillog 640 7 * @T00 Z
/var/log/sendmail.st 640 10 * 168 B
/var/log/messages 644 5 100 * Z
/var/log/all.log 600 7 * @T00 Z
/var/log/slip.log root:network 640 3 100 * Z
/var/log/ppp.log root:network 640 3 100 * Z
/var/log/security 600 10 100 * Z
/var/log/wtmp 644 3 * @01T05 B
/var/log/daily.log 640 7 * @T00 ZN
/var/log/weekly.log 640 5 1 $W6D0 ZN
/var/log/monthly.log 640 12 * $M1D0 ZN
/var/log/console.log 600 5 100 * Z
※要是我们要新加入的一些非预设的,程式(例如www)所产生的纪录档怎麽办?
/var/log/httpd-access.log 640 5 * @T00 Z /var/run/httpd.pid 30
/var/log/httpd-error.log 640 5 * @T00 Z /var/run/httpd.pid 30
第一栏是纪录档的位置, 第二栏是纪录档的权限 (mode),5 表示在硬碟
内保留过去六次处理的纪录(log.0.gz~ log.5.gz), 比六次还旧的纪录
就把他砍了。* 表示不管纪录档的大小。 @T00 表示每天零点零分的时候
处理这个档案,Z 表示把处理过的档案压缩起来, 节省空间。
※为什麽后面要加上/var/run/httpd.pid 30?
因为 newsyslog 在系统 default 的 contable (/etc/crontab) 里被预先
设定为每一个小时启动一次,然而在 newsyslog.conf 里设定让 apache log
自动 rotate,不过发现 newsyslog 后接下来的 apache log 都不会写入了,
只留下一行 newsyslog[66253]: logfile turned over
这个问题出在当 newsyslog rotate log之后,没有送个 SIGHUP 给 apache,
导致 apache的log 写到不知道什麽地方去,所以要在 newsyslog.conf 里面
有关 httpd-access.log 及 httpd-error.log 的部份后面加上要 KILL -HUP
的 pid 档,才能正常运作。
详细的内容直接用 man 去看 newsyslog 可以更清楚
叁考网站:
http://redhat.ecenter.idv.tw/bbs/showthread.php?threadid=32505
|