久久青草精品A片狠狠,日韩欧美视频一区二区,亚洲国码AV日韩,国产精品黄在

CentOS下的日志切割

2019-06-10 19:27:24 325

 在Linux下,日志會不停的增長,為了防止日志文件過大,導致我們無法在日志中快速找到想要的信息,我們會定時對日志文件進行切割。在這里我將使用logrotate切割日志。

(1).logrotate的配置文件

  logrotate配置文件主要在兩個地方:/etc/logrotate.conf以及/etc/logrotate.d/下的明細配置文件。

  其中/etc/logrotate.conf文件是主配置文件,/etc/logrotate.d/下的明細配置文件都會被讀入/etc/logrotate.conf進行執行,所以請注意這里還涉及到了公有變量和私有變量。

   logrotate的執行是由crond服務來調用的,其腳本是/etc/cron.daily/logrotate,每天自動執行。我們可以看一下腳本具體內容:

1
2
3
4
5
6
7
8
9
[root@xuexi ~]# cat /etc/cron.daily/logrotate
#!/bin/sh
 
/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

  簡單的說明下,就是/usr/sbin/logrotate工具調用了/var/lib/logrotate/logrotate.status和/etc/logrotate.conf兩個文件。然后將執行的結果(就是那個$?,成功為0,不成功為非0)進行判斷,非0時執行/usr/bin/logger命令。最后退出。

   看完定時計劃任務,我們再來看主配置文件/etc/logrotate.conf(也就是公有變量)。具體內容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@xuexi ~]# grep -vE "^$|^#" /etc/logrotate.conf
weekly  //每周一次rotate(翻譯是旋轉,其實就是切割)
rotate 4  //保留4份切割文件,多余刪除,不計算新建日志文件
create  //結束后創建一個新的空白日志文件
dateext  //用日期作為切切割文件的后綴
include /etc/logrotate.d  //將/etc/logrotate.d目錄下的文件都加載進來(全都執行)
/var/log/wtmp {  //僅針對/var/log/wtmp文件
    monthly  //每月執行一次
    create 0664 root utmp  //結束后創建新的空白日志,權限0664,所有者root,所屬組utmp
    minsize 1M  //切割文件最少需要1M,否則不執行
    rotate 1  //保留1份,多余刪除,不計算新建日志文件
}
/var/log/btmp {  //僅針對/var/log/btmp
    missingok  //丟失不報錯
    monthly  //每月執行一次
    create 0600 root utmp  //結束后創建新的空白日志,權限0600,所有者root,所屬組utmp
    rotate 1  //保留1份,多余刪除,不計算新建日志文件
}

  配置文件參數說明:

    missingok  日志切割期間產生錯誤將被忽略(如果日志丟失,不報錯繼續切割)

    daily、weekly、monthly、yearly  每天、每周、每月、每年執行

    create MODE OWNER GROUP  切割后指定創建新的空白文件的屬性

    nocreate  不建立新的日志文件

    rotate N  保留N份,多余刪除,不計算新建日志文件

    dateext  用當前日期作為后綴命名格式(默認年月日)

    dateformat .%s  配合dateext使用,緊跟在下一行出現,定義切割后的文件名,只支持%Y,%m,%d,%s

    size/minsize  達到指定大小才會切割,默認單位bytes,還可以是KB和MB

    compress  切割結束后,歸檔并使用gzip格式壓縮

    nocompress  解除compress參數

    delaycompress  總是與compress參數一起使用,指示logrotate不要將最近的歸檔壓縮,壓縮將在下一次切割進行。

    nodelaycompress  解除delaycompress參數

    ifempty  即使日志為空,也執行切割

    notifempty  如果日志為空,切割不執行

    prerotate/endscript  在所有其他指令之前執行prerotate和endscript之間的命令。

    postrotate/endscript  在所有其他指令完成后,postrotate和endscript之間的命令將被執行。

    sharescripts  所有日志切割后統一執行一次腳本,如果沒有配置該參數,則每個日志切割后都會執行一次腳本。

    errors ADDRESS  切割時的錯誤信息發送到指定的Emial地址

    mail ADDRESS  切割日志發送到指定的Email地址

    nomail  切割日志不發送郵件

    olddir DIRECTORY  切割后的日志文件放入指定目錄,必須與當前日志處在同一文件系統

    noolddir  切割后的日志文件與當前文件放在同一目錄下

    copytruncate  用于還在打開中的日志文件,把當前日志備份并截斷;先拷貝后清空,可能丟失部分日志

    nocopytruncate  備份日志文件,但不截斷。

(2).查看上次切割日志時間

  /var/lib/logrotate/logrotate.status中默認記錄logrotate上次切割日志文件的時間

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@xuexi logrotate]# cat /var/lib/logrotate/logrotate.status
logrotate state -- version 2
"/var/log/yum.log" 2019-1-2-11:30:2
"/var/log/cups/page_log" 2018-11-1-10:0:0
"/var/log/cups/error_log" 2018-11-1-10:0:0
"/var/log/boot.log" 2019-4-16-11:37:1
"/var/log/cups/access_log" 2019-4-15-10:18:1
"/var/log/chrony/*.log" 2018-11-1-10:0:0
"/var/log/wtmp" 2018-11-1-10:0:0
"/var/log/spooler" 2019-4-15-10:18:1
"/var/log/btmp" 2019-4-8-15:13:1
"/var/log/iscsiuio.log" 2018-11-1-10:0:0
"/var/log/maillog" 2019-4-15-10:18:1
"/var/log/libvirt/libvirtd.log" 2018-11-1-10:0:0
"/var/log/libvirt/qemu/*.log" 2018-11-1-10:0:0
"/var/log/wpa_supplicant.log" 2018-11-1-10:0:0
"/var/log/secure" 2019-4-15-10:18:1
"/var/log/numad.log" 2018-11-1-10:0:0
"/var/log/ppp/connect-errors" 2018-11-1-10:0:0
"/var/log/messages" 2019-4-15-10:18:1
"/var/account/pacct" 2018-11-1-10:0:0
"/var/log/cron" 2019-4-15-10:18:1

(3).自定義日志切割

  首先將sshd服務產生的日志自定義,作為實驗目標

      1
      2

      提交成功!非常感謝您的反饋,我們會繼續努力做到更好!

      這條文檔是否有幫助解決問題?

      非常抱歉未能幫助到您。為了給您提供更好的服務,我們很需要您進一步的反饋信息:

      在文檔使用中是否遇到以下問題: