這是2007年的網誌了, 從 blogger.com 搬移到此處...

若 OpenNMS 監控的設備很多, 一天下來所產生的 Log 檔案通常會多達數百MB, 因此必須定期去把 log tar 並 gzip 起來存放, 同時把過久的 gzip 檔案予以刪除
在 OpenNMS 1.3.2 以前, Log 檔案會放在 $OPENNMS_HOME/logs 底下, 因此只要寫個簡單的 script 放在 crontab 裡面定時清除 *.log.* 檔案即可. 在 OpenNMS 1.3.3, Log 檔案分別放在 $OPENNMS_HOME/logs/controller, $OPENNMS_HOME/logs/daemon, $OPENNMS_HOME/logs/webapp 等目錄底下, 因此我撰寫以下 script 以

  • 將 $OPENNMS_HOME/logs底下的 *.log.* (包含子目錄) tar
  • 將 tar 壓縮成 yyyymmdd.tar.gz 檔案
  • 將 tar 過的 *.log.* 檔案刪除
  • 將超過 7 天的 *.tar.gz 刪除

script 如下, 敬請參考指教

#!/bin/sh
# 設定 Log 的根目錄
LOGBASEDIR="$OPENNMS_HOME/logs"
# 檢查 Log 根目錄是否存在, 若不存在則顯示訊息並離開
if [ ! -d "$LOGBASEDIR" ]; then
echo "Directory $LOGBASEDIR does not exist"
exit 1;
fi
# 檢查當天的 *.tar.gz 是否已經產生, 若已經產生則顯示訊息並離開
GZFILE=`date "+%Y%m%d"`.tar.gz
cd "$LOGBASEDIR"
if [ -f "$GZFILE" ]; then
echo "File $GZFILE already existed"
exit 2;
fi
# 找出 *.log.* 檔案, tar 並 gzip 成為 yyyymmdd.tar.gz
FILES=`find . -name *.log.* -print`
tar -czf $GZFILE $FILES
# 刪除被 tar/gzip 的檔案
rm -f $FILES
# 刪除超過 7 天的 *.tar.gz 檔案
OLDGZ=`find ./ -name *.tar.gz -mtime +7`
rm -f $OLDGZ

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 Egg Chang 的頭像
    Egg Chang

    Egg Chang 的部落格

    Egg Chang 發表在 痞客邦 留言(0) 人氣()