apt-get install inetutils-syslogd
2、重啓syslog、(syslog日誌文件寫滿後會停止記錄日誌)sudo killall -HUP syslogd
3、循環記錄日誌需安裝logrotate(用於控制日誌的循環記錄)和cron(定時調用logrotate)在Debian或Ubuntu上:
sudo apt-get install logrotate cron
在Fedora,CentOS或RHEL上:yum install logrotate crontabs
4、cron會根據/etc/crontab配置定時執行命令
cron默認配置如下:
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
minute — 分鐘,從 0 到 59 之間的任何整數hour — 小時,從 0 到 23 之間的任何整數
day — 日期,從 1 到 31 之間的任何整數(如果指定了月份,必須是該月份的有效日期)
month — 月份,從 1 到 12 之間的任何整數(或使用月份的英文簡寫如 jan、feb 等等)
dayofweek — 星期,從 0 到 7 之間的任何整數,這裏的 0 或 7 代表星期日(或使用星期的英文簡寫如 sun、mon 等等)
command — 要執行的命令(命令可以是 ls /proc >> /tmp/proc 之類的命令,也可以是執行你自行編寫的腳本的命令。)
在以上任何值中,星號(*)可以用來代表所有有效的值。譬如,月份值中的星號意味着在滿足其它制約條件後每月都執行該命令。
整數間的短線(-)指定一個整數範圍。譬如,1-4 意味着整數 1、2、3、4。
用逗號(,)隔開的一系列值指定一個列表。譬如,3, 4, 6, 8 標明這四個指定的整數。
正斜線(/)可以用來指定間隔頻率。在範圍後加上 /<integer> 意味着在範圍內可以跳過 integer。譬如,0-59/2 可以用來在分鐘字段定義每兩分鐘。間隔頻率值還可以和星號一起使用。例如,*/3 的值可以用在月份字段中表示每三個月運行一次任務。
17 * * * * //每小時的第17分鐘執行一次 cron.hourly 目錄下的命令
25 6 * * * //每天的6點25執行一次 cron.daily 目錄下的命令
47 6 * * 7 //每個星期天的6點47執行一次 cron.weekly 目錄下的命令
52 6 1 * * //每月的1號6點52執行一次 cron.monthly 目錄下的命令
5、logrotate中最小輪轉週期爲小時,不能配置爲分鐘,要配置爲分鐘可以使用如下方式:(logrotate中size配置未生效沒弄懂)
6、在/etc/crontab文件中添加一個每10分鐘執行一次 cron.minutely 目錄下的命令
*/10 * * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.minutely )
7、創建目錄cron.minutely
sudo mkdir /etc/cron.minutely
8、拷貝/etc/cron.daily/logrotate到/etc/cron.minutely/目錄下
sudo cp /etc/cron.daily/logrotate /etc/cron.minutely/
9、編輯/etc/cron.minutely/logrotate文件添加命令
手動執行日誌備份命令
/usr/sbin/logrotate -vf /etc/logrotate.d/inetutils-syslogd
使用‘-d’選項以預演方式運行logrotate
logrotate -d /etc/logrotate.d/log-file
使用‘-f’選項來強制logrotate輪循日誌文件,‘-v’參數提供了詳細的輸出。
logrotate -vf /etc/logrotate.d/log-file
刪除壓縮的歷史日誌
rm /var/log/*.gz
10、編輯/etc/logrotate.d/inetutils-syslogd配置文件
/var/log/auth.log {
rotate 4
weekly
missingok
notifempty
compress
delaycompress
}
/var/log/daemon.log {
rotate 7
weekly
missingok
notifempty
compress
delaycompress
}
/var/log/debug {
size 20M
rotate 1
hourly
missingok
notifempty
compress
delaycompress
postrotate
/usr/bin/killall -HUP rsyslogd
endscript
}
/var/log/kern.log {
rotate 4
weekly
missingok
notifempty
compress
delaycompress
}
/var/log/lpr.log {
rotate 4
weekly
missingok
notifempty
compress
delaycompress
}
/var/log/mail.err {
rotate 4
weekly
missingok
notifempty
compress
delaycompress
}
/var/log/mail.info {
rotate 4
weekly
missingok
notifempty
compress
delaycompress
}
/var/log/mail.log {
rotate 4
weekly
missingok
notifempty
compress
delaycompress
}
/var/log/mail.warn {
rotate 4
weekly
missingok
notifempty
compress
delaycompress
}
/var/log/messages {
size 20M
rotate 1
hourly
missingok
notifempty
compress
delaycompress
postrotate
/usr/bin/killall -HUP rsyslogd
endscript
}
/var/log/ppp.log {
rotate 4
weekly
missingok
notifempty
compress
delaycompress
}
/var/log/user.log {
size 20M
rotate 1
hourly
missingok
notifempty
compress
delaycompress
postrotate
/usr/bin/killall -HUP rsyslogd
endscript
}
/var/log/uucp.log {
rotate 4
missingok
notifempty
weekly
compress
delaycompress
}
/var/log/syslog {
size 20M
rotate 1
hourly
compress
delaycompress
postrotate
/etc/init.d/inetutils-syslogd reload >/dev/null
endscript
}
日誌樣例
# touch /var/log/log-file
# vim /etc/logrotate.d/log-file
/var/log/log-file {
size=50M >> 日誌文件大小可以增長到50MB
dateext >> 讓舊日誌文件以創建日期命名,這可以通過添加dateext常熟實現。
monthly >> monthly: 日誌文件將按月輪循。其它可用值爲‘daily’,‘weekly’、‘hourly’或者‘yearly’。
rotate 5 >> rotate 5: 一次將存儲5個歸檔日誌。對於第六個歸檔,時間最久的歸檔將被刪除。
compress >> compress: 在輪循任務完成後,已輪循的歸檔將使用gzip進行壓縮。
delaycompress >> delaycompress: 總是與compress選項一起用,delaycompress選項指示logrotate不要將最近的歸檔壓縮,壓縮將在下一次輪循週期進行。這在你或任何軟件仍然需要讀取最新歸檔時很有用。
missingok >> missingok: 在日誌輪循期間,任何錯誤將被忽略,例如“文件無法找到”之類的錯誤。
notifempty >> notifempty: 如果日誌文件爲空,輪循不會進行。
create 644 root root >> create 644 root root: 以指定的權限創建全新的日誌文件,同時logrotate也會重命名原始日誌文件。
postrotate >> postrotate/endscript: 在所有其它指令完成後,postrotate和endscript裏面指定的命令將被執行。在這種情況下,rsyslogd 進程將立即再次讀取其配置並繼續運行。
/usr/bin/killall -HUP rsyslogd
endscript
}