您好,登錄后才能下訂單哦!
本篇內容介紹了“Linux系統下Logrotate服務介紹”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
對于日常管理linux來說,日志文件顯得非常的重要,它可以看出問題出現的點與相關錯誤信息,同樣還可以根據信息來分析問題所出現的原因所在,是管理系統與服務必不可少的工具之一。
logrotate是個十分有用的工具,它可以自動對日志進行截斷(或輪循)、壓縮以及刪除舊的日志文件。例如,你可以設置logrotate,讓/var/log/XXX日志文件每10天輪循,并刪除超過1個月的日志。配置完后,logrotate的運作完全自動化,其實與系統的定時任務調用自定義腳本作用相同,它的運行也是定時任務來調用它的配置文件,從而實現上述效果的
安裝命令非常簡單(一般系統都會默認安裝)
yum install logrotate crontabs
配置文件目錄
/etc/logrotate.d
#所有需要此功能的配置文件存放目錄
[root@centos logrotate.d]# cat zabbix-agent
/var/log/zabbix/zabbix_agentd.log {
daily
rotate 12
compress
delaycompress
missingok
notifempty
create 0664 zabbix zabbix
}
參數說明
daily #指定轉儲周期為每天
weekly #指定轉儲周期為每周
monthly #指定轉儲周期為每月
rotate 12 #轉儲的次數
compress #通過gzip壓縮轉儲以后的日志
nocompress #不需要壓縮時,用這個參數
copytruncate
#用于還在打開中的日志文件,把當前日志備份并截斷
nocopytruncate
#備份日志文件但是不截斷
delaycompress
#和compress一起使用時,轉儲的日志文件到下一次轉儲時才壓縮
notifempty
#如果是空文件的話,不轉儲
postrotate/endscript
#在轉儲以后需要執行的命令可以放入這個對,這兩個關鍵字必須單獨成行
sharedscripts 運行postrotate腳本,作用是在所有日志都輪轉后統一執行一次腳本。如果沒有配置那么每個日志輪轉后都會執行一次腳本
size size
#當日志文件到達指定的大小時才轉儲,Size可以指定bytes(缺省)以及KB(sizek)或者MB(sizem)
1、系統的定時任務來運行/etc/cron.daily/logrotate
[root@ ~]# cat /etc/cron.daily/logrotate
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
2、每天通過執行/usr/sbin/logrotate命令調用/etc/logrotate.conf這個配置文件
[root@resources ~]# cat /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly
# 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
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
3、最終調用/etc/logrotate.d下面的配置文件執行相關操作
[root@ logrotate.d]# cat vsftpd
/var/log/vsftpd.log {
# ftpd doesn't handle SIGHUP properly
nocompress
missingok
}
/var/log/xferlog {
# ftpd doesn't handle SIGHUP properly
nocompress
missingok
}
需要注意的是當/etc/logrotate.conf讀入文件時,include指定的文件中的參數會覆蓋默認的參數
______________分享一個切割nginx日志的例子________________
vim /etc/logrotate.d/nginx
##############################
# for cut nginx log everyday
# create by mingongge at 2017-05-31
##############################
/var/log/nginx/*.log {
daily
rotate 7
missingok
notifempty
dateext
sharedscripts
postrotate
if [ -f /usr/local/nginx/logs/nginx.pid ];then
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
fi
endscript
}
上下兩個配置實現的效果相同,請各自參考按需配置
vim /servser/scripts/auto_cut_nginxlog.sh
#!/bin/sh
#####################################
# this scripts for auto cut nginx log everyday
# create by mingongge at 2017-05-31
#####################################
LOGDIR=/var/log/nginx/
DATE=`date +%F`
mv $LOGDIR/access.log $LOGDIR/nginx_access.${DATE}.log
mv $LOGDIR/error.log $LOGDIR/nginx_error.${DATE}.log
kill -USR1 `cat /var/run/nginx.pid`
cd $LOGDIR
find ./ -name “*.log” –mtime +30 |xargs -i mv {} /tmp/
#實際生產環境大家還是要小心使用rm命令,或者說最好禁用此命令改用mv(后悔藥哦!!)
“Linux系統下Logrotate服務介紹”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。