服务器:Ubuntu Server 14.04
我有一个 Watchguard Firebox 正在向服务器记录日志。它应该每天轮换,但是,当轮换发生时,它不会写入新日志。它继续写入上一个日志。
配置在/etc/logrotate.d/
/var/log/watchguard
{
rotate 14
daily
missingok
create 640 syslog adm
compress
delaycompress
sharedscripts
su root syslog
postrotate
/usr/sbin/service rsyslog reload >/dev/null 2>&1 || true
endscript
}
如您所见,旋转正在发生,但最新日志尚未写入:
-rw-r----- 1 syslog adm 20 Jan 17 02:30 watchguard.3.gz
-rw-r----- 1 syslog adm 20 Jan 18 02:30 watchguard.2.gz
-rw-r----- 1 syslog adm 0 Jan 20 02:30 watchguard <---- SHOULD CONTAIN DATA
-rw-r----- 1 syslog adm 3.0G Jan 20 10:34 watchguard.1 <--- ROTATED, BUT STILL GETTING DATA
好像它并不关心文件的名称。它只是继续写入。我的logrotate
配置语法不正确吗?
答案1
我把postrotate
脚本全部删除,然后添加了copytruncate
。检查了过去几天的日志,发现它正在轮换,并使用最新的日志。如果有更好的方法,欢迎大家提出意见,但这对我来说很有效。
/var/log/watchguard
{
rotate 14
daily
missingok
create 640 syslog adm
compress
delaycompress
su root syslog
copytruncate
}
工作得很好!
-rw-r----- 1 syslog adm 336M Jan 27 02:34 watchguard.2.gz
-rw-r----- 1 syslog adm 5.2G Jan 28 02:34 watchguard.1
-rw-r----- 1 syslog adm 950M Jan 28 08:02 watchguard