เมื่อเวลาผ่านไปผมสังเกตเห็นบางอย่างในการบันทึก/var/log
เช่นauth
, kern
และmessages
ได้รับมาก ฉันทำlogrotate
รายการสำหรับพวกเขา:
$ cat /etc/logrotate.d/auth.log
/var/log/kern.log {
rotate 5
daily
}
$ cat /etc/logrotate.d/kern.log
/var/log/kern.log {
rotate 5
daily
}
$ cat /etc/logrotate.d/messages
/var/log/messages {
rotate 5
daily
postrotate
/bin/killall -HUP syslogd
endscript
}
ฉันยังมีcompress
ตัวเลือกเปิดใช้งาน:
$ grep compress /etc/logrotate.conf
# uncomment this if you want your log files compressed
compress
นี้ทำงานได้ดีสำหรับauth.log
, kern.log
และอื่น ๆ ซึ่งหมายความว่าแต่ละบันทึกเหล่านั้น gzipped และหมุนด้วย 5 วันสุดท้ายของการบันทึกเก็บไว้ /var/log/messages
อย่างไรก็ตามไม่มีการบีบอัดทำให้มีการบันทึกมากกว่า 5 วัน:
$ ls /var/log/messages*
/var/log/messages /var/log/messages-20100213
/var/log/messages-20100201 /var/log/messages-20100214
/var/log/messages-20100202 /var/log/messages-20100215
/var/log/messages-20100203 /var/log/messages-20100216
/var/log/messages-20100204 /var/log/messages-20100217
/var/log/messages-20100205 /var/log/messages-20100218
/var/log/messages-20100206 /var/log/messages-20100219
/var/log/messages-20100207 /var/log/messages-20100220
/var/log/messages-20100208 /var/log/messages-20100221
/var/log/messages-20100209 /var/log/messages-20100222
/var/log/messages-20100210 /var/log/messages-20100223
/var/log/messages-20100211 /var/log/messages-20100224
/var/log/messages-20100212
ตามที่อธิบายไว้ในคำถามอื่นlogrotate
ใน ServerFaultล็อกเก่าไม่น่าจะถูกลบออกเพราะไฟล์จบจะแตกต่างกันสำหรับแต่ละไฟล์ สิ่งนี้ดูเหมือนจะเป็นเพราะไฟล์ไม่ได้ถูก gzipped
ฉันจะทำอย่างไรเพื่อให้มีการ/var/log/messages
บีบอัดและหมุนด้วยการบันทึก 5 วันสุดท้ายเช่นเดียวกับไฟล์บันทึกอื่น ๆ ของฉัน ฉันกำลังคิดถึงอะไร
แก้ไข 1 : ข้อมูลเพิ่มเติมตามที่ร้องขอในคำตอบคู่แรก
ฉันใช้ Gentoo Linux /etc/logrotate.conf
ไฟล์ของฉัน:
$ cat /etc/logrotate.conf
# $Header: /var/cvsroot/gentoo-x86/app-admin/logrotate/files/logrotate.conf,v 1.3 2008/12/24 20:49:10 dang Exp $
#
# Logrotate default configuration file for Gentoo Linux
#
# See "man logrotate" for details
# rotate log files weekly
weekly
#daily
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
compress
# packages can drop log rotation information into this directory
include /etc/logrotate.d
notifempty
nomail
noolddir
# no packages own lastlog or wtmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
/etc/logrotate.d
มีไฟล์ config ที่กำหนดเองตามที่กล่าวไว้ข้างต้นพร้อมกับ config สำหรับ mysql, rsync และอื่น ๆ ที่ติดตั้งโดยแพ็คเกจเหล่านั้น
รากของฉันcrontab
ว่างเปล่า:
$ sudo crontab -l
no crontab for root
ฉันจะตรวจสอบทั้งหมด/etc/cron.{daily,hourly,monthly,weekly}
สำหรับสิ่งที่ syslog ที่เกี่ยวข้องและมีสคริปต์ซึ่งหมุนและ/var/log/syslog
/var/log/auth.log
ต่อไปผมจะทำ/var/log/messages
เท่านั้นlogrotate
ไฟล์ config ตามที่แนะนำโดย CarpeNoctem:
$ cat logrotate-messages
weekly
rotate 4
create
dateext
compress
notifempty
nomail
noolddir
/var/log/messages {
rotate 5
daily
postrotate
/bin/killall -HUP syslogd
endscript
}
จากนั้นฉันก็วิ่งlogrotate
ด้วยตนเอง:
$ logrotate -d logrotate-messages -f
reading config file logrotate-messages
reading config info for /var/log/messages
Handling 1 logs
rotating pattern: /var/log/messages forced from command line (5 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/messages
log needs rotating
rotating log /var/log/messages, log->rotateCount is 5
dateext suffix '-20100224'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
glob finding old rotated logs failed
renaming /var/log/messages to /var/log/messages-20100224
creating new /var/log/messages mode = 0644 uid = 0 gid = 0
running postrotate script
running script with arg /var/log/messages : "
/bin/killall -HUP syslogd
"
compressing log with: /bin/gzip
$ which gzip
/bin/gzip
$ file /bin/gzip
/bin/gzip: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
ตามบันทึกข้างต้นlogrotate
บีบอัดเข้าสู่ระบบด้วย / bin / gzip /var/log
แต่ฉันไม่เห็นไฟล์บีบอัดในข้อความ นอกจากนี้การวนสำหรับไฟล์ที่หมุนแล้วเก่าก็ล้มเหลว
แก้ไข 2 : การเพิ่มเอาต์พุตการดีบักของการlogrotate
รันหลังจากผนวก.gz
ส่วนต่อท้ายเข้ากับ/var/log/message-*
ไฟล์เก่า
เราเริ่มด้วย:
$ ls /var/log/messages*
/var/log/messages /var/log/messages-20100222.gz
/var/log/messages-20100219.gz /var/log/messages-20100223.gz
/var/log/messages-20100220.gz /var/log/messages-20100224.gz
/var/log/messages-20100221.gz
จากนั้นเรียกใช้logrotate
ไฟล์ปรับแต่งของเรา:
$ logrotate -d logrotate-messages -f
reading config file logrotate-messages
reading config info for /var/log/messages
Handling 1 logs
rotating pattern: /var/log/messages forced from command line (5 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/messages
log needs rotating
rotating log /var/log/messages, log->rotateCount is 5
dateext suffix '-20100224'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
removing /var/log/messages-20100219.gz
removing old log /var/log/messages-20100219.gz
destination /var/log/messages-20100224.gz already exists, skipping rotation
เวลานี้logrotate
glob สำเร็จและพบ logfile ที่บีบอัดที่หกตั้งใจที่จะลบมัน ไฟล์ไม่ได้ถูกลบจริงๆ ฉันเดาว่าเป็นเพราะเรากำลังทำงานในโหมดแก้ไขข้อบกพร่อง
ฉันอยากรู้ว่าการเปิดใช้งานdelaycompress
ตัวเลือกสำหรับ/var/log/messages
จะช่วยได้หรือไม่ ฉันเปิดใช้งานมันและจะตรวจสอบผลลัพธ์ในเช้าวันรุ่งขึ้น