天天看點

關于logrotate的額外補充

1)檢視logrotate對log檔案的具體執行情況的語句是#cat /var/lib/logrotate.status,效果如圖:

<a href="https://s3.51cto.com/wyfs02/M02/9A/B9/wKioL1lZ4FzQ7RPOAABJI9Qizo0867.png" target="_blank"></a>

2)使用-v或-d參數時,顯示“log does not need rotating",這是因為logrotate在對status未記錄的檔案進行轉儲時,會在status添加一條該檔案的記錄,并将操作時間設為當天。之後程式再次對此檔案進行轉儲時發現這個檔案今天已經操作過,就不再進行相關操作。要是想解決這個問題可以"使用-s指定logrotate狀态檔案";

3)分割日志時報錯:“error: skipping "/var/log/nginx/test.access.log" because parent directory has insecure permissions (It's world writable or writable by group which is not "root") Set "su" directive in config file to tell logrotate which user/group should be used for rotation.”這是目前使用者不是root,需要添加“su root list“這個語句到對應的logrotate配置檔案裡,比如:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<code>/var/log/nginx/</code><code>*.log {</code>

<code>        </code><code>su</code> <code>root list</code>

<code>        </code><code>daily</code>

<code>        </code><code>missingok</code>

<code>        </code><code>rotate 52</code>

<code>        </code><code>compress</code>

<code>        </code><code>delaycompress</code>

<code>        </code><code>notifempty</code>

<code>        </code><code>#ifempty</code>

<code>        </code><code>create 0640 www-data adm</code>

<code>        </code><code>sharedscripts</code>

<code>        </code><code>postrotate</code>

<code>                </code><code>[ ! -f </code><code>/var/run/nginx</code><code>.pid ] || </code><code>kill</code> <code>-USR1 `</code><code>cat</code> <code>/var/run/nginx</code><code>.pid`</code>

<code>        </code><code>endscript</code>

<code>}</code>

4)如果覺得使用logrotate很麻煩,而當某個檔案過大的時候,要實作把該檔案壓縮并且拆成若幹個指定大小的檔案,怎麼辦?

tar -zcvf 新檔案名.tar.gz 原檔案名 | split -b 每個分格包大小 -d -a 1 - 新檔案名.tar.gz

比如:#tar -zcvf ABC.tar.gz ABC | split -b 4000M -d -a 1 - ABC.tar.gz.   這個指令就是把ABC這個檔案壓縮成ABC.tar.gz,但是如果ABC大于4000M就會切塊,切成ABC.tar.gz.0,ABC.tar.gz.1,ABC.tar.gz.2......這個樣子。

//使用split指令,-b 4000M 表示設定每個分割包的大小,機關還是可以k

// -d "參數指定生成的分割包字尾為數字的形式

//-a x來設定序列的長度(預設值是2),這裡設定序列的長度為1

如果要把這一堆已經切塊的檔案重新接壓縮的指令:#cat ABC.tar.gz.* | tar -zxv ;

5)如果用 kill -HUP來重新開機一個包含守護程序的程序,比如httpd,一條語句搞定:

這裡面首先用 awk擷取到httpd的pid程序号,然後把這個程序号傳給了xargs,通過-L 1來一次提取一行pid值,然後分批進行kill -HUP;

最後的最後,如果您覺得本文對您升職加薪迎娶白富美有幫助,那麼請不吝贊助之手,刷一下下面的二維碼,贊助本人繼續寫更多優秀的博文!

 本文轉自 蘇幕遮618 51CTO部落格,原文連結:http://blog.51cto.com/chenx1242/1944073

繼續閱讀