不再擔心記錄檔過大:通用日誌滾動指令碼

來源:互聯網
上載者:User
不用再擔心指令碼輸出的記錄檔過大爆滿磁碟,log_rotater.sh可讓你高枕無憂,肆無忌憚地重新導向日誌到檔案中。 log_rotater.zip
  #!/bin/sh# Writed by yijian on 2012/7/22# 本指令碼功能:# 1) 實現一個通用的按大小的日誌滾動# 2) 要求記錄檔副檔名為“.log”,否則請稍修改代碼# 3) 支援處理多個目錄下的記錄檔,如果需要使用這個功能,#    必須啟用dirs_list參數## 為何要寫一個這樣的東東?# 答:因為在日常中,經常發現程式輸出重新導向,#     或指令碼的輸出,如果不處理的話,就可能導致#     單個檔案過大,甚至爆滿整個磁碟;而每套指令碼#     都重複寫一個日誌滾動邏輯,顯然是件無聊的事,#     甚至一些人懶得做處理,日子一久,就會發現一個超大的#     記錄檔,本指令碼希望可以協助解決這個問題,讓大家無#     後顧之憂。## 使用方法:# 1) 把指令碼複製到記錄檔所在目錄,#    然後以nohup ./log_rotater.sh > /dev/null & 等方式啟動指令碼即可# 2) 除了上面的方法,也可以將log_rotater.sh任何目錄下,#    但這個時候,應當將backup_dir的值修改為記錄檔所在目錄## sudo dpkg-reconfigure dash# 新版本Ubuntu預設使用dash作為shell,# 這個shell功能較弱,不支援數組等,但速度快,# 可採取如下辦法檢測是何種shell:# ls -l `which sh` # 可根據需要修改以下參數backup_count=10 # 日誌滾動的個數backup_size=$((1024 * 1024 * 200)) # 單個記錄檔大小backup_interval=60 # 檢測的間隔時間,單位為秒# 如果dirs_list指定的檔案存在,則從dirs_list中讀取目錄,# 否則僅處理backup_dir指定的單個目錄# 往dirs_list指定檔案增減目錄時,不需要重啟log_rotater.shbackup_dir=. # 記錄檔所在目錄dirs_list=./dirs.list # 儲存目錄列表的檔案,要求一行一個目錄 # 處理單個目錄下的日誌滾動scan_single_dir(){dir=$1cd $dirif test $? -ne 0; thenreturnfi# 用到了awk給外部變數賦值的特性eval $(ls -l --time-style=long-iso *.log 2>/dev/null|awk '{ printf("filesize=%s\nfiledate=%s\nfilename=%s\n", $5,$6,$8); }')if test $? -ne 0; thenreturnfiif test -z $filename; thenreturnfiif test $filesize -gt $backup_size; thenfile_index=$(($backup_count - 1))while test $file_index -gt 1; donew_filename="${filename}.$file_index"old_filename="${filename}.$(($file_index - 1))"if test -f "$old_filename"; thenmv "$old_filename" "$new_filename"fifile_index=$(($file_index - 1))done    # 這裡需要使用truncate,而不能使用mv,        # 因為需要保持檔案的inode不變cp "$filename" "${filename}.1"truncate -s 1024 "$filename"ficd -sleep 1} # 迴圈檢測while true; doif test ! -f $dirs_list; thenscan_single_dir $backup_direlsewhile read dirpathdoscan_single_dir $dirpathdone < $dirs_listfisleep $backup_intervaldone

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.