監控linux系統的shell

jlttt發表於2008-06-23

目標:每隔60s將vmstat的結果輸出到一個日誌檔案,系統重啟後也能自動執行

步驟:

1.編寫shell指令碼monitor.sh,可以每隔60s將vmstat的結果輸出到log.txt中,同時輸出前顯示時間。

[root@xh root]# more monitor.sh
echo "====== time is "`date +%Y%m%d/%H:%M:%S` "========" >>/root/log.txt
nohup vmstat 60 >>/root/log.txt 2>&1 &

注意:

飄葉-廣州 11:52:50
2通常是一些錯誤輸出,不會寫到日誌裡面。
1是命令的輸出。
最後加 &,就是靜默方式執行了。
錯誤輸出(2)只會輸出到螢幕的,只能在螢幕看到。所以要重定向到標準輸出(1) >>追加 >覆蓋

2.編寫time.sh,可以透過作業系統的crontab呼叫,每隔1小時顯示一次時間,並追加到log.txt中。

[root@xh root]# more time.sh
echo "====== time is "`date +%Y%m%d/%H:%M:%S` "========" >>/root/log.txt

3.編寫backup.sh,透過crontab呼叫,每月定期將log.txt轉儲到/root/log下,並清空log.txt。

[root@xh root]# more 1.sh
/bin/sh /root/time.sh >> /root/log.txt
dd=`date +%Y%m%d%H%M%S`
cp /root/log.txt /root/log/log.$dd
> /root/log.txt
/bin/sh /root/time.sh >> /root/log.txt
4.crontab -l中的內容

0 * * * * /root/time.sh
0 8 * * * /root/1.sh

注意:以上6項 依次代表分鐘,小時,每月幾號,哪個月,星期幾,命令

在以上任何值中,星號(*)可以用來代表所有有效的值。譬如,月份值中的星號意味著在滿足其它制約條件後每月都執行該命令。

整數間的短線(-)指定一個整數範圍。譬如,1-4 意味著整數 1、2、3、4。

用逗號(,)隔開的一系列值指定一個列表。譬如,3, 4, 6, 8 標明這四個指定的整數。

正斜線(/)可以用來指定間隔頻率。在範圍後加上 /<integer> 意味著在範圍內可以跳過 integer。譬如,0-59/2 可以用來在分鐘欄位定義每兩分鐘。間隔頻率值還可以和星號一起使用。例如,*/3 的值可以用在月份欄位中表示每三個月執行一次任務。

開頭為井號(#)的行是註釋,不會被處理。

編輯完crontab內容後,重啟服務service crond restart

5.將monitor.sh新增到/etc/rc.local裡

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9533994/viewspace-1006018/,如需轉載,請註明出處,否則將追究法律責任。

相關文章