Linux日志切割神器logrotate原理介紹和配置詳解

前言

在Linux環(huán)境中能夠幫助我們分析問題蛛絲馬跡的有效辦法之一便是日志催什,常見的如操作系統(tǒng)syslog日志/var/log/messages畅铭,應(yīng)用程序Nginx日志/var/log/nginx/*.log。但如果服務(wù)器數(shù)量較多若专,日志文件大小增長較快,不斷消耗磁盤空間就會觸發(fā)告警,如果需要人為定期按照各種維度去手動清理日志就顯得十分棘手吱窝。為了節(jié)省空間和方便整理,可以將日志文件按時間或大小分成多份迫靖,刪除時間久遠的日志文件院峡,這就是通常說的日志滾動(log rotation)。logrotate(GitHub地址) 誕生于 1996/11/19 是一個Linux系統(tǒng)日志的管理工具系宜,本文會詳細介紹Linux日志切割神器logroate的原理和配置照激。

Linux日志切割神器logrotate原理介紹和配置詳解

更新歷史

2019年11月05日 - 初稿

閱讀原文 - https://wsgzao.github.io/post/logrotate/

擴展閱讀

man logrotate


logrotate簡介

logrotate ‐ rotates, compresses, and mails system logs

logrotate is designed to ease administration of systems that generate large numbers of log files. It allows automatic rotation, compression, removal, and mailing of log files. Each log file may be handled daily, weekly, monthly, or when it grows too large.

Normally, logrotate is run as a daily cron job. It will not modify a log more than once in one day unless the criterion for that log is based on the log's size and logrotate is being run more than once each day, or unless the -f or --force option is used.

Any number of config files may be given on the command line. Later config files may override the options given in earlier files, so the order in which the logrotate config files are listed is important. Normally, a single config file which includes any other config files which are needed should be used. See below for more information on how to
use the include directive to accomplish this. If a directory is given on the command line, every file in that directory is used as a config file.

If no command line arguments are given, logrotate will print version and copyright information, along with a short usage summary. If any errors occur while rotating logs, logrotate will exit with non-zero status.

logrotate 是一個 linux 系統(tǒng)日志的管理工具№锬粒可以對單個日志文件或者某個目錄下的文件按時間 / 大小進行切割俩垃,壓縮操作;指定日志保存數(shù)量汰寓;還可以在切割之后運行自定義命令口柳。

logrotate 是基于 crontab 運行的,所以這個時間點是由 crontab 控制的有滑,具體可以查詢 crontab 的配置文件 /etc/anacrontab跃闹。 系統(tǒng)會按照計劃的頻率運行 logrotate,通常是每天。在大多數(shù)的 Linux 發(fā)行版本上望艺,計劃每天運行的腳本位于 /etc/cron.daily/logrotate苛秕。

主流 Linux 發(fā)行版上都默認安裝有 logrotate 包,如果你的 linux 系統(tǒng)中找不到 logrotate, 可以使用 apt-get 或 yum 命令來安裝找默。

logrotate運行機制

logrotate 在很多 Linux 發(fā)行版上都是默認安裝的想帅。系統(tǒng)會定時運行 logrotate,一般是每天一次啡莉。系統(tǒng)是這么實現(xiàn)按天執(zhí)行的港准。crontab 會每天定時執(zhí)行 /etc/cron.daily 目錄下的腳本,而這個目錄下有個文件叫 logrotate咧欣。在 centos 上腳本內(nèi)容是這樣的:

系統(tǒng)自帶 cron task:/etc/cron.daily/logrotate浅缸,每天運行一次。

[root@gop-sg-192-168-56-103 logrotate.d]# 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

可以看到這個腳本主要做的事就是以 /etc/logrotate.conf 為配置文件執(zhí)行了 logrotate魄咕。就是這樣實現(xiàn)了每天執(zhí)行一次 logrotate衩椒。

因為我的系統(tǒng)執(zhí)行 /etc/cron.daily 目錄下的腳本不是我想滾動日志的時間,所以我把 /etc/cron.daily/logrotate 拷了出來哮兰,改了一下 logrotate 配置文件的路徑毛萌,然后在 crontab 里加上一條指定時間執(zhí)行這個腳本的記錄,自定義周期滾動日志就大功告成了喝滞。這種自定義的方式有兩點要注意:

  1. 配置文件里一定要配置 rotate 文件數(shù)目這個參數(shù)阁将。如果不配置默認是 0 個,也就是只允許存在一份日志右遭,剛切分出來的日志會馬上被刪除做盅。多么痛的領(lǐng)悟,說多了都是淚窘哈。
  2. 執(zhí)行 logrotate 命令最好加 -f 參數(shù)吹榴,不然有時候配置文件修改的內(nèi)容不生效。

很多程序的會用到 logrotate 滾動日志滚婉,比如 nginx图筹。它們安裝后,會在 /etc/logrotate.d 這個目錄下增加自己的 logrotate 的配置文件让腹。logrotate 什么時候執(zhí)行 /etc/logrotate.d 下的配置呢远剩?看到 /etc/logrotate.conf 里這行,一切就不言而喻了哨鸭。

include /etc/logrotate.d

logrotate原理

logrotate 是怎么做到滾動日志時不影響程序正常的日志輸出呢民宿?logrotate 提供了兩種解決方案。

  1. create
  2. copytruncate

Linux 文件操作機制

介紹一下相關(guān)的 Linux 下的文件操作機制像鸡。

Linux 文件系統(tǒng)里文件和文件名的關(guān)系如下圖。

[圖片上傳失敗...(image-bf501c-1573030378572)]

目錄也是文件,文件里存著文件名和對應(yīng)的 inode 編號只估。通過這個 inode 編號可以查到文件的元數(shù)據(jù)和文件內(nèi)容志群。文件的元數(shù)據(jù)有引用計數(shù)、操作權(quán)限蛔钙、擁有者 ID锌云、創(chuàng)建時間、最后修改時間等等吁脱。文件件名并不在元數(shù)據(jù)里而是在目錄文件中桑涎。因此文件改名、移動兼贡,都不會修改文件攻冷,而是修改目錄文件。

借《UNIX 環(huán)境高級編程》里的圖說一下進程打開文件的機制遍希。

image

進程每新打開一個文件等曼,系統(tǒng)會分配一個新的文件描述符給這個文件。文件描述符對應(yīng)著一個文件表凿蒜。表里面存著文件的狀態(tài)信息(O_APPEND/O_CREAT/O_DIRECT...)禁谦、當(dāng)前文件位置和文件的 inode 信息。系統(tǒng)會為每個進程創(chuàng)建獨立的文件描述符和文件表废封,不同進程是不會共用同一個文件表州泊。正因為如此,不同進程可以同時用不同的狀態(tài)操作同一個文件的不同位置漂洋。文件表中存的是 inode 信息而不是文件路徑拥诡,所以文件路徑發(fā)生改變不會影響文件操作。

create

這也就是默認的方案氮发,可以通過 create 命令配置文件的權(quán)限和屬組設(shè)置渴肉;這個方案的思路是重命名原日志文件,創(chuàng)建新的日志文件爽冕。詳細步驟如下:

  1. 重命名正在輸出日志文件仇祭,因為重命名只修改目錄以及文件的名稱,而進程操作文件使用的是 inode颈畸,所以并不影響原程序繼續(xù)輸出日志乌奇。
  2. 創(chuàng)建新的日志文件,文件名和原日志文件一樣眯娱,注意礁苗,此時只是文件名稱一樣,而 inode 編號不同徙缴,原程序輸出的日志還是往原日志文件輸出试伙。
  3. 最后通過某些方式通知程序,重新打開日志文件;由于重新打開日志文件會用到文件路徑而非 inode 編號疏叨,所以打開的是新的日志文件潘靖。

如上也就是 logrotate 的默認操作方式,也就是 mv+create 執(zhí)行完之后蚤蔓,通知應(yīng)用重新在新文件寫入即可卦溢。mv+create 成本都比較低,幾乎是原子操作秀又,如果應(yīng)用支持重新打開日志文件单寂,如 syslog, nginx, mysql 等,那么這是最好的方式吐辙。

不過宣决,有些程序并不支持這種方式,壓根沒有提供重新打開日志的接口袱讹;而如果重啟應(yīng)用程序疲扎,必然會降低可用性,為此引入了如下方式捷雕。

copytruncate

該方案是把正在輸出的日志拷 (copy) 一份出來椒丧,再清空 (trucate) 原來的日志;詳細步驟如下:

  1. 將當(dāng)前正在輸出的日志文件復(fù)制為目標文件救巷,此時程序仍然將日志輸出到原來文件中壶熏,此時,原文件名也沒有變浦译。
  2. 清空日志文件棒假,原程序仍然還是輸出到預(yù)案日志文件中,因為清空文件只把文件的內(nèi)容刪除了精盅,而 inode 并沒改變帽哑,后續(xù)日志的輸出仍然寫入該文件中。

如上所述叹俏,對于 copytruncate 也就是先復(fù)制一份文件妻枕,然后清空原有文件。

通常來說粘驰,清空操作比較快屡谐,但是如果日志文件太大,那么復(fù)制就會比較耗時蝌数,從而可能導(dǎo)致部分日志丟失愕掏。不過這種方式不需要應(yīng)用程序的支持即可。

配置logrotate

執(zhí)行文件: /usr/sbin/logrotate
主配置文件: /etc/logrotate.conf
自定義配置文件: /etc/logrotate.d/*.conf

修改配置文件后顶伞,并不需要重啟服務(wù)饵撑。
由于 logrotate 實際上只是一個可執(zhí)行文件剑梳,不是以 daemon 運行。

/etc/logrotate.conf - 頂層主配置文件肄梨,通過 include 指令阻荒,會引入 /etc/logrotate.d 下的配置文件

[root@gop-sg-192-168-56-103 wangao]# 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.

/etc/logrotate.d/ 通常一些第三方軟件包挠锥,會把自己私有的配置文件众羡,也放到這個目錄下。 如 yum蓖租,zabbix-agent粱侣,syslog,nginx 等蓖宦。

[root@gop-sg-192-168-56-103 logrotate.d]# cat yum
/var/log/yum.log {
    missingok
    notifempty
    size 30k
    yearly
    create 0600 root root
}

運行l(wèi)ogrotate

具體 logrotate 命令格式如下:

logrotate [OPTION...] <configfile>
-d, --debug :debug 模式齐婴,測試配置文件是否有錯誤。
-f, --force :強制轉(zhuǎn)儲文件稠茂。
-m, --mail=command :壓縮日志后柠偶,發(fā)送日志到指定郵箱。
-s, --state=statefile :使用指定的狀態(tài)文件睬关。
-v, --verbose :顯示轉(zhuǎn)儲過程诱担。

crontab 定時

通常慣用的做法是配合 crontab 來定時調(diào)用。

crontab -e
*/30 * * * * /usr/sbin/logrotate /etc/logrotate.d/rsyslog > /dev/null 2>&1 &

手動運行

debug 模式:指定 [-d|--debug]

logrotate -d <configfile>

并不會真正進行 rotate 或者 compress 操作电爹,但是會打印出整個執(zhí)行的流程蔫仙,和調(diào)用的腳本等詳細信息。

verbose 模式: 指定 [-v|--verbose]

logrotate -v <configfile>

會真正執(zhí)行操作丐箩,打印出詳細信息(debug 模式摇邦,默認是開啟 verbose)

logrotate參數(shù)

詳細介紹請自行 man logrotate, 或者在線 man page屎勘。

主要介紹下完成常用需求會用到的一些參數(shù)施籍。

一個典型的配置文件如下:

[root@localhost ~]# vim /etc/logrotate.d/log_file 

/var/log/log_file {

    monthly
    rotate 5
    compress
    delaycompress
    missingok
    notifempty
    create 644 root root
    postrotate
        /usr/bin/killall -HUP rsyslogd
    endscript
}
  • monthly: 日志文件將按月輪循。其它可用值為daily概漱,weekly或者yearly丑慎。
  • rotate 5: 一次將存儲 5 個歸檔日志。對于第六個歸檔犀概,時間最久的歸檔將被刪除立哑。
  • compress: 在輪循任務(wù)完成后,已輪循的歸檔將使用 gzip 進行壓縮姻灶。
  • delaycompress: 總是與 compress 選項一起用铛绰,delaycompress 選項指示 logrotate 不要將最近的歸檔壓縮,壓縮 將在下一次輪循周期進行产喉。這在你或任何軟件仍然需要讀取最新歸檔時很有用捂掰。
  • missingok: 在日志輪循期間敢会,任何錯誤將被忽略,例如 “文件無法找到” 之類的錯誤这嚣。
  • notifempty: 如果日志文件為空鸥昏,輪循不會進行。
  • create 644 root root: 以指定的權(quán)限創(chuàng)建全新的日志文件姐帚,同時 logrotate 也會重命名原始日志文件吏垮。
  • postrotate/endscript: 在所有其它指令完成后,postrotate 和 endscript 里面指定的命令將被執(zhí)行罐旗。在這種情況下膳汪,rsyslogd 進程將立即再次讀取其配置并繼續(xù)運行。

上面的模板是通用的九秀,而配置參數(shù)則根據(jù)你的需求進行調(diào)整遗嗽,不是所有的參數(shù)都是必要的。

/var/log/log_file {
    size=50M
    rotate 5
    dateext
    create 644 root root
    postrotate
        /usr/bin/killall -HUP rsyslogd
    endscript
}

在上面的配置文件中鼓蜒,我們只想要輪詢一個日志文件痹换,size=50M 指定日志文件大小可以增長到 50MB,dateext 指
示讓舊日志文件以創(chuàng)建日期命名。

常見配置參數(shù)

daily :指定轉(zhuǎn)儲周期為每天
weekly :指定轉(zhuǎn)儲周期為每周
monthly :指定轉(zhuǎn)儲周期為每月
rotate count :指定日志文件刪除之前轉(zhuǎn)儲的次數(shù)都弹,0 指沒有備份娇豫,5 指保留 5 個備份
tabooext [+] list:讓 logrotate 不轉(zhuǎn)儲指定擴展名的文件,缺省的擴展名是:.rpm-orig, .rpmsave, v, 和~
missingok:在日志輪循期間缔杉,任何錯誤將被忽略锤躁,例如 “文件無法找到” 之類的錯誤。
size size:當(dāng)日志文件到達指定的大小時才轉(zhuǎn)儲或详,bytes (缺省) 及 KB (sizek) 或 MB (sizem)
compress: 通過 gzip 壓縮轉(zhuǎn)儲以后的日志
nocompress: 不壓縮
copytruncate:用于還在打開中的日志文件系羞,把當(dāng)前日志備份并截斷
nocopytruncate: 備份日志文件但是不截斷
create mode owner group : 轉(zhuǎn)儲文件,使用指定的文件模式創(chuàng)建新的日志文件
nocreate: 不建立新的日志文件
delaycompress: 和 compress 一起使用時霸琴,轉(zhuǎn)儲的日志文件到下一次轉(zhuǎn)儲時才壓縮
nodelaycompress: 覆蓋 delaycompress 選項椒振,轉(zhuǎn)儲同時壓縮。
errors address : 專儲時的錯誤信息發(fā)送到指定的 Email 地址
ifempty :即使是空文件也轉(zhuǎn)儲梧乘,這個是 logrotate 的缺省選項澎迎。
notifempty :如果是空文件的話,不轉(zhuǎn)儲
mail address : 把轉(zhuǎn)儲的日志文件發(fā)送到指定的 E-mail 地址
nomail : 轉(zhuǎn)儲時不發(fā)送日志文件
olddir directory:儲后的日志文件放入指定的目錄选调,必須和當(dāng)前日志文件在同一個文件系統(tǒng)
noolddir: 轉(zhuǎn)儲后的日志文件和當(dāng)前日志文件放在同一個目錄下
prerotate/endscript: 在轉(zhuǎn)儲以前需要執(zhí)行的命令可以放入這個對夹供,這兩個關(guān)鍵字必須單獨成行

更多信息請參考man logrotate幫助文檔

手動運行l(wèi)ogrotate演練

logrotate 可以在任何時候從命令行手動調(diào)用。
調(diào)用 /etc/lograte.d/ 下配置的所有日志:

[root@localhost ~]# logrotate /etc/logrotate.conf

要為某個特定的配置調(diào)用 logrotate:

[root@localhost ~]# logrotate /etc/logrotate.d/log_file

排障過程中的最佳選擇是使用-d選項以預(yù)演方式運行 logrotate仁堪。要進行驗證哮洽,不用實際輪循任何日志文件,
可以模擬演練日志輪循并顯示其輸出弦聂。

[root@localhost ~]# logrotate -d /etc/logrotate.d/log_file

reading config file /etc/logrotate.d/log_file
reading config info for /var/log/log_file 

Handling 1 logs

rotating pattern: /var/log/log_file  monthly (5 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/log_file
  log does not need rotating
not running postrotate script, since no logs were rotated

正如我們從上面的輸出結(jié)果可以看到的鸟辅,logrotate 判斷該輪循是不必要的氛什。如果文件的時間小于一天,這就會發(fā)生了匪凉。

強制輪循即使輪循條件沒有滿足枪眉,我們也可以通過使用-f選項來強制 logrotate 輪循日志文件,-v參數(shù)提供了詳細的輸出再层。

[root@localhost ~]# logrotate -vf /etc/logrotate.d/log_file 

reading config file /etc/logrotate.d/log_file
reading config info for /var/log/log_file 

Handling 1 logs

rotating pattern: /var/log/log_file  forced from command line (5 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/log_file
  log needs rotating
rotating log /var/log/log_file, log->rotateCount is 5
dateext suffix '-20180503'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
previous log /var/log/log_file.1 does not exist
renaming /var/log/log_file.5.gz to /var/log/log_file.6.gz (rotatecount 5, logstart 1, i 5), 
old log /var/log/log_file.5.gz does not exist
renaming /var/log/log_file.4.gz to /var/log/log_file.5.gz (rotatecount 5, logstart 1, i 4), 
old log /var/log/log_file.4.gz does not exist
renaming /var/log/log_file.3.gz to /var/log/log_file.4.gz (rotatecount 5, logstart 1, i 3), 
old log /var/log/log_file.3.gz does not exist
renaming /var/log/log_file.2.gz to /var/log/log_file.3.gz (rotatecount 5, logstart 1, i 2), 
old log /var/log/log_file.2.gz does not exist
renaming /var/log/log_file.1.gz to /var/log/log_file.2.gz (rotatecount 5, logstart 1, i 1), 
old log /var/log/log_file.1.gz does not exist
renaming /var/log/log_file.0.gz to /var/log/log_file.1.gz (rotatecount 5, logstart 1, i 0), 
old log /var/log/log_file.0.gz does not exist
log /var/log/log_file.6.gz doesn't exist -- won't try to dispose of it
fscreate context set to unconfined_u:object_r:var_log_t:s0
renaming /var/log/log_file to /var/log/log_file.1
creating new /var/log/log_file mode = 0644 uid = 0 gid = 0
running postrotate script
set default create context
    

logrotate配置文件實例

syslog

[root@gop-sg-192-168-56-103 logrotate.d]# cat syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
    missingok
    sharedscripts
    postrotate
    /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

zabbix-agent

[root@gop-sg-192-168-56-103 logrotate.d]# cat zabbix-agent
/var/log/zabbix/zabbix_agentd.log {
    weekly
    rotate 12
    compress
    delaycompress
    missingok
    notifempty
    create 0664 zabbix zabbix
}

nginx

[root@gop-sg-192-168-56-103 logrotate.d]# cat nginx
/var/log/nginx/*.log /var/log/nginx/*/*.log{
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
        [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
    endscript
}

influxdb

[root@gop-sg-192-168-56-103 logrotate.d]# cat influxdb
/var/log/influxdb/influxd.log {
    daily
    rotate 7
    missingok
    dateext
    copytruncate
    compress
}

關(guān)于 USR1 信號解釋

USR1 亦通常被用來告知應(yīng)用程序重載配置文件贸铜;例如,向 Apache HTTP 服務(wù)器發(fā)送一個 USR1 信號將導(dǎo)致以下步驟的發(fā)生:停止接受新的連接树绩,等待當(dāng)前連接停止萨脑,重新載入配置文件隐轩,重新打開日志文件饺饭,重啟服務(wù)器,從而實現(xiàn)相對平滑的不關(guān)機的更改职车。

對于 USR1 和 2 都可以用戶自定義的瘫俊,在 POSIX 兼容的平臺上,SIGUSR1 和 SIGUSR2 是發(fā)送給一個進程的信號悴灵,它表示了用戶定義的情況扛芽。它們的符號常量在頭文件 signal.h 中定義。在不同的平臺上积瞒,信號的編號可能發(fā)生變化川尖,因此需要使用符號名稱。

kill -HUP pid
killall -HUP pName

其中 pid 是進程標識茫孔,pName 是進程的名稱叮喳。

如果想要更改配置而不需停止并重新啟動服務(wù),可以使用上面兩個命令缰贝。在對配置文件作必要的更改后馍悟,發(fā)出該命令以動態(tài)更新服務(wù)配置。根據(jù)約定剩晴,當(dāng)你發(fā)送一個掛起信號 (信號 1 或 HUP) 時锣咒,大多數(shù)服務(wù)器進程 (所有常用的進程) 都會進行復(fù)位操作并重新加載它們的配置文件。

logrotate日志切割輪詢

由于 logrotate 是基于 cron 運行的赞弥,所以這個日志輪轉(zhuǎn)的時間是由 cron 控制的毅整,具體可以查詢 cron 的配置文件 /etc/anacrontab,過往的老版本的文件為(/etc/crontab)

查看輪轉(zhuǎn)文件:/etc/anacrontab

[root@gop-sg-192-168-56-103 logrotate.d]# cat /etc/anacrontab
# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1   5   cron.daily      nice run-parts /etc/cron.daily
7   25  cron.weekly     nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly        nice run-parts /etc/cron.monthly

使用 anacrontab 輪轉(zhuǎn)的配置文件绽左,日志切割的生效時間是在凌晨 3 點到 22 點之間悼嫉,而且隨機延遲時間是 45 分鐘,但是這樣配置無法滿足我們在現(xiàn)實中的應(yīng)用

現(xiàn)在的需求是將切割時間調(diào)整到每天的晚上 12 點妇菱,即每天切割的日志是前一天的 0-24 點之間的內(nèi)容承粤,操作如下:

    mv /etc/anacrontab /etc/anacrontab.bak          //取消日志自動輪轉(zhuǎn)的設(shè)置

使用 crontab 來作為日志輪轉(zhuǎn)的觸發(fā)容器來修改 logrotate 默認執(zhí)行時間

[root@gop-sg-192-168-56-103 logrotate.d]# vim /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
59 23 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

參考文章

How To Manage Logfiles with Logrotate on Ubuntu 16.04
How to Use logrotate to Manage Log Files
Linux 日志文件總管 ——logrotate
logrotate 機制和原理
Linux 自帶 Logrotate 日志切割工具配置詳解

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末暴区,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子辛臊,更是在濱河造成了極大的恐慌仙粱,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件彻舰,死亡現(xiàn)場離奇詭異伐割,居然都是意外死亡,警方通過查閱死者的電腦和手機刃唤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進店門隔心,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人尚胞,你說我怎么就攤上這事硬霍。” “怎么了笼裳?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵唯卖,是天一觀的道長。 經(jīng)常有香客問我躬柬,道長拜轨,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任允青,我火速辦了婚禮橄碾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘颠锉。我一直安慰自己法牲,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布木柬。 她就那樣靜靜地躺著皆串,像睡著了一般。 火紅的嫁衣襯著肌膚如雪眉枕。 梳的紋絲不亂的頭發(fā)上恶复,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天,我揣著相機與錄音速挑,去河邊找鬼谤牡。 笑死,一個胖子當(dāng)著我的面吹牛姥宝,可吹牛的內(nèi)容都是我干的翅萤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼腊满,長吁一口氣:“原來是場噩夢啊……” “哼套么!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起省咨,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤玷室,失蹤者是張志新(化名)和其女友劉穎零蓉,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體穷缤,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年章喉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片快耿。...
    茶點故事閱讀 40,444評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡囊陡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情妥色,我是刑警寧澤,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站滤钱,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏许师。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一搭幻、第九天 我趴在偏房一處隱蔽的房頂上張望逞盆。 院中可真熱鬧,春花似錦云芦、人聲如沸贸桶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至离例,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間宫蛆,已是汗流浹背的猛。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留叛拷,地道東北人岂却。 一個月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像署浩,于是被迫代替她去往敵國和親扫尺。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,455評論 2 359

推薦閱讀更多精彩內(nèi)容

  • crond服務(wù) Linux一般自帶安裝cron 安裝crontab:查看服務(wù)狀態(tài)/sbin/service cr...
    小小的小帥閱讀 4,998評論 0 1
  • 1、介紹 Logrotate是linux日志切割工具 Logrotate是基于crontab定時任務(wù)實現(xiàn)的定時日志...
    馮艷輝brook閱讀 3,817評論 0 50
  • 1 概述 ??logrotate是一個Linux系統(tǒng)默認安裝了的日志文件管理工具肴颊,用來把舊文件輪轉(zhuǎn)渣磷、壓縮、刪除,并...
    橡皮24閱讀 4,904評論 0 0
  • 日志管理Rsyslog [TOC] 背景 有一個4臺機器的分布式服務(wù)提完,不多不少丘侠,上每臺機器上查看日志比較麻煩,用F...
    ferret閱讀 31,525評論 0 6
  • 月色 已漸成追憶 日光 猶杳無音訊 夜深打肝,人靜挪捕,燈滅 在光與影的更迭中 無力地掙扎 黒夜與我孤獨對視 沒有流星劃過
    肆飄怪人閱讀 289評論 1 1