समय के साथ मैंने कुछ लॉग को देखा /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
और अन्य, जिसका अर्थ है कि उनमें से प्रत्येक लॉग को पिछले 5 दिनों के लॉग को बनाए रखने के साथ gzipped और घुमाया गया है। /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
जैसा कि ServerFault के एक अन्य logrotate
प्रश्न में बताया गया है , पुराने लॉग हैं (सबसे अधिक संभावना है) को हटाया नहीं जा रहा है क्योंकि फ़ाइल की समाप्ति प्रत्येक फ़ाइल के लिए अलग है। यह प्रतीत होता है क्योंकि फ़ाइलों को gzipped नहीं किया जा रहा है।
मैं /var/log/messages
अपने सभी अन्य लॉग फ़ाइलों की तरह पिछले 5 दिनों की लॉग्स के साथ संपीड़ित और घुमाए जाने के लिए क्या कर सकता हूं ? मुझे किसकी याद आ रही है?
EDIT 1 : पहले जोड़े के जवाब में अनुरोध की गई अतिरिक्त जानकारी।
मैं जेंटू लिनक्स चला रहा हूं। मेरी /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
उन पैकेजों द्वारा स्थापित mysql, rsync, इत्यादि के लिए विन्यास के साथ-साथ मेरे कस्टम विन्यास फाइल शामिल हैं।
मेरी जड़ crontab
खाली है:
$ sudo crontab -l
no crontab for root
मैं सब /etc/cron.{daily,hourly,monthly,weekly}
कुछ संबंधित syslog के लिए जाँच की , और वहाँ एक स्क्रिप्ट है जो घूमता है /var/log/syslog
और /var/log/auth.log
।
इसके बाद, मैंने CarpeNoctem द्वारा सुझाए गए /var/log/messages
-only logrotate
config फ़ाइल बनाई:
$ 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
। इसके अलावा, पुरानी घुमाए गए फ़ाइलों के लिए ग्लोबिंग विफल रहा।
EDIT 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
ग्लोब सफल हो गया है और इसे हटाने का इरादा रखते हुए छठे संपीड़ित लॉगफाइल को ढूंढता है। फ़ाइल को वास्तव में हटाया नहीं गया है; मुझे लगता है कि क्योंकि हम डिबग मोड में चल रहे हैं।
मैं उत्सुक हूं कि क्या delaycompress
विकल्प को सक्षम करने /var/log/messages
से मदद मिलेगी। मैंने इसे सक्षम किया और अगली सुबह परिणामों की जांच करेगा।