linux伺服器自動切割並清理日誌 linux系統 linux怎麼讀 linux教程

來源:互聯網
上載者:User
需求

由於nginx的日誌會不停地增大,所以需要我們自己去切割日誌,方便管理,需要達到以下的效果:

  1. 按日期自動切割日誌,最小單位是天。
  2. 當日誌總量超過一定量時,自動直接清理日誌,限定總量不能超過1000MB。
  3. 寫入crontab定時任務裡。

分析

  1. nginx日誌目錄下分別有access.log和error.log,按照日期自動切割日誌則需要將每天的日誌以”yyyymmdd_access/error.log”的格式儲存下來,用mv重新命名每一天的記錄檔即可。
  2. 清理日誌就簡單了,只需要判斷這個檔案夾下的大小,然後將一定日期之前的記錄檔清理掉就ok了。
  3. crontab任務也比較簡單,詳情可以看這裡。
  4. 問題的關鍵在於,用mv重新命名完昨天的記錄檔後,nginx還是會向這個重新命名後的檔案(如access_20160409.log)寫入日誌,我們的目的是需要使nginx重建一個新的記錄檔(access.log)並寫入。
  5. As we all know,linux系統下一切都是檔案,所以每一個進程都有其檔案描述符,而nginx進程將其自己的檔案描述符寫入了nginx.pid中,我們需要告訴nginx,讓其重新開啟一個新的記錄檔(記錄檔的配置詳情可看這裡,簡單說就是讓日誌記錄什麼內容。)於是我們需要這條指令:

    kill -USR1 `cat ${pid_path}`

    這條指令的意思是:首先cat到nginx的pid,是一個整數,然後將訊號USR1發送給這個進程,nginx進程收到這個訊號後,會根據配置重新開啟一個新的記錄檔,並將日誌寫入。

實現

指令碼cut_nginx_log.sh:

#!/bin/bashlog_path=/path/to/nginx/pid_path=/path/to/nginx.pid#清理掉指定日期前的日誌DAYS=30#產生昨天的記錄檔mv ${log_path}access.log ${log_path}access_$(date -d"yesterday" +"%Y%m%d").logmv ${log_path}error.log ${log_path}error_$(date -d"yesterday" +"%Y%m%d").logkill -USR1 `cat ${pid_path}`#檔案夾大小size=du -m -s${log_path}if [size -gt1000];then    find ${logs_path} -name "access_*" -type f -mtime +$DAYS -exec rm {} \;    find ${logs_path} -name "error_*" -type f -mtime +$DAYS -exec rm {} \;fi

添加至crontab:
(每天零點自動執行)

crontab -e00 * * * /path/to/script

至此就解決了自動切割並清理日誌的功能,有問題的歡迎提出。

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('
  • ').text(i)); }; $numbering.fadeIn(1700); }); });

    以上就介紹了linux伺服器自動切割並清理日誌,包括了Linux方面的內容,希望對PHP教程有興趣的朋友有所協助。

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.