시간이지나면서 나는 몇 가지 로그주의 /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
그 로그의 각 gzip으로 압축 및 유지 로그의 마지막 오일로, 회전 것을 의미하고, 다른 사람을. /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
질문에서 설명했듯이 파일 끝은 파일마다 다르기 때문에 이전 로그가 제거되지 않을 가능성이 높습니다. 파일이 압축되지 않았기 때문입니다.
내가 할 수있는이 가지고 /var/log/messages
내 다른 로그 파일을 모두 같은 유지 압축 및 로그의 마지막 오일 회전? 내가 무엇을 놓치고 있습니까?
편집 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
전용 logrotate
구성 파일을 만들었습니다.
$ 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가 성공하여 6 번째 압축 로그 파일을 찾아 제거하려고합니다. 파일은 실제로 제거되지 않습니다. 디버그 모드에서 실행 중이기 때문입니다.
delaycompress
옵션을 활성화 /var/log/messages
하면 도움 이 될지 궁금합니다 . 나는 그것을 활성화하고 다음날 아침 결과를 확인할 것입니다.