-d, –debug :debug模式,測試配置文件是否有錯誤。
-f, –force :強制轉儲文件。
-m, –mail=command :壓縮日志后,發(fā)送日志到指定郵箱。
-s, –state=statefile :使用指定的狀態(tài)文件。
-v, –verbose :顯示轉儲過程。

根據(jù)日志切割設置進行操作,并顯示詳細信息

[root@huanqiu_web1 ~]# /usr/sbin/logrotate -v /etc/logrotate.conf 
[root@huanqiu_web1 ~]# /usr/sbin/logrotate -v /etc/logrotate.d/php 

根據(jù)日志切割設置進行執(zhí)行,并顯示詳細信息,但是不進行具體操作,debug模式

[root@huanqiu_web1 ~]# /usr/sbin/logrotate -d /etc/logrotate.conf 
[root@huanqiu_web1 ~]# /usr/sbin/logrotate -d /etc/logrotate.d/nginx 

查看各log文件的具體執(zhí)行情況

[root@fangfull_web1 ~]# cat /var/lib/logrotate.status 

2)切割介紹

比如以系統(tǒng)日志/var/log/message做切割來簡單說明下:

第一次執(zhí)行完rotate(輪轉)之后,原本的messages會變成messages.1,而且會制造一個空的messages給系統(tǒng)來儲存日志;

第二次執(zhí)行之后,messages.1會變成messages.2,而messages會變成messages.1,又造成一個空的messages來儲存日志!

如果僅設定保留三個日志(即輪轉3次)的話,那么執(zhí)行第三次時,則 messages.3這個檔案就會被刪除,并由后面的較新的保存日志所取代!也就是會保存最新的幾個日志。

日志究竟輪換幾次,這個是根據(jù)配置文件中的dateext 參數(shù)來判定的。

看下logrotate.conf配置:

# cat /etc/logrotate.conf
# 底下的設定是 logrotate 的默認值 ,如果別的文件設定了其他的值,
# 就會以其它文件的設定為主
weekly  //默認每一周執(zhí)行一次rotate輪轉工作
rotate 4 //保留多少個日志文件(輪轉幾次).默認保留四個.就是指定日志文件刪除之前輪轉的次數(shù),0 指沒有備份
create  //自動創(chuàng)建新的日志文件,新的日志文件具有和原來的文件相同的權限;因為日志被改名,因此要創(chuàng)建一個新的來繼續(xù)存儲之前的日志
dateext //這個參數(shù)很重要!就是切割后的日志文件以當前日期為格式結尾,如xxx.log-20131216這樣,如果注釋掉,切割出來是按數(shù)字遞增,即前面說的 xxx.log-1這種格式
compress //是否通過gzip壓縮轉儲以后的日志文件,如xxx.log-20131216.gz ;如果不需要壓縮,注釋掉就行

include /etc/logrotate.d
# 將 /etc/logrotate.d/ 目錄中的所有文件都加載進來

/var/log/wtmp {   //僅針對 /var/log/wtmp 所設定的參數(shù)
monthly   //每月一次切割,取代默認的一周
minsize 1M  //文件大小超過 1M 后才會切割
create 0664 root utmp  //指定新建的日志文件權限以及所屬用戶和組
rotate 1   //只保留一個日志.
}
# 這個 wtmp 可記錄用戶登錄系統(tǒng)及系統(tǒng)重啟的時間
# 因為有 minsize 的參數(shù),因此不見得每個月一定會執(zhí)行一次喔.要看文件大小。

由這個文件的設定可以知道/etc/logrotate.d其實就是由/etc/logrotate.conf 所規(guī)劃出來的目錄,雖然可以將所有的配置都寫入/etc/logrotate.conf ,但是這樣一來這個文件就實在是太復雜了,尤其是當使用很多的服務在系統(tǒng)上面時, 每個服務都要去修改/etc/logrotate.conf的設定也似乎不太合理了。

所以,如果獨立出來一個目錄,那么每個要切割日志的服務, 就可以獨自成為一個文件,并且放置到 /etc/logrotate.d/ 當中

其他重要參數(shù)說明

———————————————————————————————————

compress                                   通過gzip 壓縮轉儲以后的日志
nocompress                                不做gzip壓縮處理
copytruncate                              用于還在打開中的日志文件,把當前日志備份并截斷;是先拷貝再清空的方式,拷貝和清空之間有一個時間差,可能會丟失部分日志數(shù)據(jù)。
nocopytruncate                           備份日志文件不過不截斷
create mode owner group             輪轉時指定創(chuàng)建新文件的屬性,如create 0777 nobody nobody
nocreate                                    不建立新的日志文件
delaycompress                           和compress 一起使用時,轉儲的日志文件到下一次轉儲時才壓縮
nodelaycompress                        覆蓋 delaycompress 選項,轉儲同時壓縮。
missingok                                 如果日志丟失,不報錯繼續(xù)滾動下一個日志
errors address                           專儲時的錯誤信息發(fā)送到指定的Email 地址
ifempty                                    即使日志文件為空文件也做輪轉,這個是logrotate的缺省選項。
notifempty                               當日志文件為空時,不進行輪轉
mail address                             把轉儲的日志文件發(fā)送到指定的E-mail 地址
nomail                                     轉儲時不發(fā)送日志文件
olddir directory                         轉儲后的日志文件放入指定的目錄,必須和當前日志文件在同一個文件系統(tǒng)
noolddir                                   轉儲后的日志文件和當前日志文件放在同一個目錄下
sharedscripts                           運行postrotate腳本,作用是在所有日志都輪轉后統(tǒng)一執(zhí)行一次腳本。如果沒有配置這個,那么每個日志輪轉后都會執(zhí)行一次腳本
prerotate                                 在logrotate轉儲之前需要執(zhí)行的指令,例如修改文件的屬性等動作;必須獨立成行
postrotate                               在logrotate轉儲之后需要執(zhí)行的指令,例如重新啟動 (kill -HUP) 某個服務!必須獨立成行
daily                                       指定轉儲周期為每天
weekly                                    指定轉儲周期為每周
monthly                                  指定轉儲周期為每月
rotate count                            指定日志文件刪除之前轉儲的次數(shù),0 指沒有備份,5 指保留5 個備份
dateext                                  使用當期日期作為命名格式
dateformat .%s                       配合dateext使用,緊跟在下一行出現(xiàn),定義文件切割后的文件名,必須配合dateext使用,只支持 %Y %m %d %s 這四個參數(shù)
size(或minsize) log-size            當日志文件到達指定的大小時才轉儲,log-size能指定bytes(缺省)及KB (sizek)或MB(sizem).
當日志文件 >= log-size 的時候就轉儲。 以下為合法格式:(其他格式的單位大小寫沒有試過)
size = 5 或 size 5 (>= 5 個字節(jié)就轉儲)
size = 100k 或 size 100k
size = 100M 或 size 100M

小示例:下面一個切割nginx日志的配置

[root@master-server ~]# vim /etc/logrotate.d/nginx 

/usr/local/nginx/logs/*.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

} 

————————————————–分享一例曾經使用過的nginx日志切割處理腳本———————————————–

1)logrotate日志分割配置:

[root@bastion-IDC ~# vim /etc/logrotate.d/nginx

/data/nginx_logs/*.access_log  

{

nocompress     

daily     

copytruncate     

create    

ifempty     

olddir /data/nginx_logs/days  

rotate 0      

} 

2)日志分割腳本

[root@bastion-IDC ~# vim /usr/local/sbin/logrotate-nginx.sh

#!/bin/bash

#創(chuàng)建轉儲日志壓縮存放目錄

mkdir -p /data/nginx_logs/days

#手工對nginx日志進行切割轉換

/usr/sbin/logrotate -vf /etc/logrotate.d/nginx

#當前時間

time=$(date -d yesterday  %Y-%m-%d)

#進入轉儲日志存放目錄

cd /data/nginx_logs/days

#對目錄中的轉儲日志文件的文件名進行統(tǒng)一轉換

for i in $(ls ./ | grep ^\\\\(.*\\\\)\\\\.[[:digit:]]$)

do

mv ${i} ./$(echo ${i}|sed -n \\\'s/^\\\\(.*\\\\)\\\\.\\\\([[:digit:]]\\\\)$/\\\\1/p\\\')-$(echo $time)

done

#對轉儲的日志文件進行壓縮存放,并刪除原有轉儲的日志文件,只保存壓縮后的日志文件。以節(jié)約存儲空間

for i in $(ls ./ | grep ^\\\\(.*\\\\)\\\\-\\\\([[:digit:]-]\\\\ \\\\)$)

do

tar jcvf ${i}.bz2 ./${i}

rm -rf ./${i}

done

#只保留最近7天的壓縮轉儲日志文件

find /data/nginx_logs/days/* -name *.bz2 -mtime 7 -type f -exec rm -rf {} \\\\; 

3)crontab定時執(zhí)行

[root@bastion-IDC ~# crontab -e

#logrotate

0 0 * * * /bin/bash -x /usr/local/sbin/logrotate-nginx.sh > /dev/null 2>&1 

手動執(zhí)行腳本,測試下看看:

[root@bastion-IDC ~# /bin/bash -x /usr/local/sbin/logrotate-nginx.sh

[root@bastion-IDC ~# cd /data/nginx_logs/days 

[root@bastion-IDC days# ls

huantest.access_log-2017-01-18.bz2 

———————————-php腳本切割一例———————————-

[root@huanqiu_web1 ~]# cat /etc/logrotate.d/php 

/Data/logs/php/*log {

 daily

 rotate 365

 missingok

 notifempty

 compress

 dateext

 sharedscripts

 postrotate

 if [ -f /Data/app/php5.6.26/var/run/php-fpm.pid ]; then

  kill -USR1 `cat /Data/app/php5.6.26/var/run/php-fpm.pid`

 fi

 endscript

 postrotate

 /bin/chmod 644 /Data/logs/php/*gz

 endscript

}

 

[root@huanqiu_web1 ~]# ll /Data/app/php5.6.26/var/run/php-fpm.pid 

-rw-r--r-- 1 root root 4 Dec 28 17:03 /Data/app/php5.6.26/var/run/php-fpm.pid

 

[root@huanqiu_web1 ~]# cd /Data/logs/php

[root@huanqiu_web1 php]# ll

total 25676

-rw-r--r-- 1 root root  0 Jun 1 2016 error.log

-rw-r--r-- 1 nobody nobody 182 Aug 30 2015 error.log-20150830.gz

-rw-r--r-- 1 nobody nobody 371 Sep 1 2015 error.log-20150901.gz

-rw-r--r-- 1 nobody nobody 315 Sep 7 2015 error.log-20150907.gz

.........

......... 

———————————-nginx日志切割一例———————————–

[root@huanqiu_web1 ~]# cat /etc/logrotate.d/nginx 

/Data/logs/nginx/*/*log {

 daily

 rotate 365

 missingok

 notifempty

 compress

 dateext

 sharedscripts

 postrotate

 /etc/init.d/nginx reload

 endscript

}

 

[root@huanqiu_web1 ~]# ll /Data/logs/nginx/www.huanqiu.com/

..........

-rw-r--r-- 1 root root 1652 Jan 1 00:00 error.log-20170101.gz

-rw-r--r-- 1 root root 1289 Jan 2 00:00 error.log-20170102.gz

-rw-r--r-- 1 root root 1633 Jan 3 00:00 error.log-20170103.gz

-rw-r--r-- 1 root root 3239 Jan 4 00:00 error.log-20170104.gz 

———————————-系統(tǒng)日志切割一例———————————–

[root@huanqiu_web1 ~]# cat /etc/logrotate.d/syslog

/var/log/cron

/var/log/maillog

/var/log/messages

/var/log/secure

/var/log/spooler

{

 sharedscripts

 postrotate

 /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true

 endscript

}

 

[root@huanqiu_web1 ~]# ll /var/log/messages*

-rw------- 1 root root 34248975 Jan 19 18:42 /var/log/messages

-rw------- 1 root root 51772994 Dec 25 03:11 /var/log/messages-20161225

-rw------- 1 root root 51800210 Jan 1 03:05 /var/log/messages-20170101

-rw------- 1 root root 51981366 Jan 8 03:36 /var/log/messages-20170108

-rw------- 1 root root 51843025 Jan 15 03:40 /var/log/messages-20170115

[root@huanqiu_web1 ~]# ll /var/log/cron*

-rw------- 1 root root 2155681 Jan 19 18:43 /var/log/cron

-rw------- 1 root root 2932618 Dec 25 03:11 /var/log/cron-20161225

-rw------- 1 root root 2939305 Jan 1 03:06 /var/log/cron-20170101

-rw------- 1 root root 2951820 Jan 8 03:37 /var/log/cron-20170108

-rw------- 1 root root 3203992 Jan 15 03:41 /var/log/cron-20170115

[root@huanqiu_web1 ~]# ll /var/log/secure*

-rw------- 1 root root 275343 Jan 19 18:36 /var/log/secure

-rw------- 1 root root 2111936 Dec 25 03:06 /var/log/secure-20161225

-rw------- 1 root root 2772744 Jan 1 02:57 /var/log/secure-20170101

-rw------- 1 root root 1115543 Jan 8 03:26 /var/log/secure-20170108

-rw------- 1 root root 731599 Jan 15 03:40 /var/log/secure-20170115

[root@huanqiu_web1 ~]# ll /var/log/spooler*

-rw------- 1 root root 0 Jan 15 03:41 /var/log/spooler

-rw------- 1 root root 0 Dec 18 03:21 /var/log/spooler-20161225

-rw------- 1 root root 0 Dec 25 03:11 /var/log/spooler-20170101

-rw------- 1 root root 0 Jan 1 03:06 /var/log/spooler-20170108

-rw------- 1 root root 0 Jan 8 03:37 /var/log/spooler-20170115

———————————-tomcat日志切割一例———————————–

[root@huanqiu-backup ~]# cat /etc/logrotate.d/tomcat

/Data/app/tomcat-7-huanqiu/logs/catalina.out {

rotate 14

daily

copytruncate

compress

notifempty

missingok

}

 

[root@huanqiu-backup ~]# ll /Data/app/tomcat-7-huanqiu/logs/catalina.*

-rw-r--r--. 1 root root  0 Jan 19 19:11 /Data/app/tomcat-7-huanqiu/logs/catalina.out

-rw-r--r--. 1 root root 95668 Jan 19 19:11 /Data/app/tomcat-7-huanqiu/logs/catalina.out.1.gz

———————————早期用過的nginx日志處理一例———————————-

[root@letv-backup ~]# vim /letv/sh/cut_nginx_log.sh

#!/bin/bash

# 你的日志文件存放目錄

logs_path=/letv/logs/

# 日志文件的名字,多個需要空格隔開

logs_names=(error access pv_access)

dates=`date -d yesterday  %Y%m%d`

mkdir -p ${logs_path}$dates/

num=${#logs_names[@]}

for((i=0;i<num;i  ));do

mv ${logs_path}${logs_names[i]}.log ${logs_path}$dates/${logs_names[i]}.log

done

#nginx平滑重啟

kill -USR1 `cat /letv/logs/nginx/nginx.pid`   

 

結合crontab定時執(zhí)行

[root@letv-backup ~]# crontab -e

#nginx日志切割

00 00 * * * cd /letv/logs;/bin/bash /letv/sh/cut_nginx_log.sh > /dev/null 2>$1

3)嘗試解決logrotate無法自動輪詢日志的辦法

現(xiàn)象說明:

使用logrotate輪詢nginx日志,配置好之后,發(fā)現(xiàn)nginx日志連續(xù)兩天沒被切割,這是為什么呢

然后開始檢查日志切割的配置文件是否有問題,檢查后確定配置文件一切正常。

于是懷疑是logrotate預定的cron沒執(zhí)行,查看了cron的日志,發(fā)現(xiàn)有一條Dec 7 04:02:01 www crond[18959]: (root) CMD (run-parts /etc/cron.daily)這樣的日志,證明cron在04:02分時已經執(zhí)行/etc/cron.daily目錄下的程序。

接著查看/etc /cron.daily/logrotate(這是logrotate自動輪轉的腳本)的內容:

[root@huanqiu_test ~]# cat /etc/cron.daily/logrotate

#!/bin/sh

 

/usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1

EXITVALUE=$?

if [ $EXITVALUE != 0 ]; then

 /usr/bin/logger -t logrotate ALERT exited abnormally with [$EXITVALUE]

fi

exit 0

沒有發(fā)現(xiàn)異常,配置好的日志輪轉操作都是由這個腳本完成的,一切運行正常,腳本應該就沒問題。

直接執(zhí)行命令:

[root@huanqiu_test ~]# /usr/sbin/logrotate /etc/logrotate.conf

這些系統(tǒng)日志是正常輪詢了,但nginx日志卻還是沒輪詢

接著強行啟動記錄文件維護操作,縱使logrotate指令認為沒有需要,應該有可能是logroate認為nginx日志太小,不進行輪詢。

故需要強制輪詢,即在/etc/cron.daily/logrotate腳本中將 -t 參數(shù)替換成 -f 參數(shù)

[root@huanqiu_test ~]# cat /etc/cron.daily/logrotate

#!/bin/sh

 

/usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1

EXITVALUE=$?

if [ $EXITVALUE != 0 ]; then

 /usr/bin/logger -f logrotate ALERT exited abnormally with [$EXITVALUE]

fi

exit 0

最后最后重啟下cron服務:

[root@huanqiu_test ~]# /etc/init.d/crond restart
Stopping crond: [ OK ]
Starting crond: [ OK ]

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對三五互聯(lián)的支持。

更多關于云服務器域名注冊,虛擬主機的問題,請訪問三五互聯(lián)官網:m.shinetop.cn

贊(0)
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享網絡內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。郵箱:3140448839@qq.com。本站原創(chuàng)內容未經允許不得轉載,或轉載時需注明出處:三五互聯(lián)知識庫 » Linux中l(wèi)ogrotate日志輪詢操作總結

登錄

找回密碼

注冊

主站蜘蛛池模板: 精品婷婷色一区二区三区| 亚洲一区二区三成人精品| 激情无码人妻又粗又大| 男女动态无遮挡动态图| 人妻少妇精品系列一区二区| 亚洲精品男男一区二区| 欧洲精品免费一区二区三区| 荥阳市| 国产精一品亚洲二区在线播放| 日本精品一区二区不卡| 成人网站免费观看永久视频下载 | 亚洲精品一区二区三区综合 | 欧美极品色午夜在线视频| 亚洲中文字幕伊人久久无码| 日本一区二区三区东京热| 国产在线无遮挡免费观看| 成人国产精品三上悠亚久久| 久久精品A一国产成人免费网站| 精品亚洲没码中文字幕| 激情欧美日韩一区二区| 久久亚洲美女精品国产精品| 亚洲欧洲日产国无高清码图片| 国产成人av电影在线观看第一页| 国产熟女丝袜av一二区| 欧美三级a做爰在线观看| 国产jizzjizz视频| 成年女人片免费视频播放A| 久久精品国产99精品亚洲| 国产午夜亚洲精品久久| 日韩av在线不卡一区二区三区 | 国产精品线在线精品国语| 天天澡日日澡狠狠欧美老妇| 国产SUV精品一区二区6| 中文字幕在线精品国产| 久久精品国产99麻豆蜜月| 免费人成网站免费看视频| 黑人巨大精品欧美一区二区| 欧美成人精品三级网站视频| 亚洲午夜福利网在线观看 | 91人妻无码成人精品一区91| 亚洲av伦理一区二区|