2017-04-26 109 views
0

我試圖分析隨機崩潰application.To獲得過程中的一些細節我在執行類似下面top命令重定向

procID=$(ps -aef|grep app|awk '{print $2}') 

top -p $procID -b -d 10 > test.log 

腳本在這種情況下top命令將每10秒執行和寫到test.log。計劃無限期地運行它,但是我想在每次top命令寫入一些值時清除test.log的內容。我怎樣才能相應地修改腳本?

+0

衝出來,你是什麼意思? – Derlin

+0

我的意思是每次清除test.log的內容。我不想讓test.log的內容變得如此之大。 – user1495948

+0

爲什麼不使用'logrotate'來避免你的測試文件增長?因爲如果你每次重寫,你的日誌將只是一個反映到頂部命令的結果... – Derlin

回答

0

爲了避免您的日誌變得過大,建議您改用logrotate。簡而言之,logrotate會創建一個cronjob,用於根據條件(每天一個文件,當文件達到給定大小時旋轉等)「旋轉」日誌文件。您也可以選擇保留X最後一次旋轉的日誌。

這是用於lastmessage和其他Linux的日誌文件(因此.log.1.log.2等)

這裏是使其工作有一個基本的方法:

創建一個配置你的檔案在/etc/logrotate.d。例如:

# /etc/logrotate.d/test 
/var/log/test.log { 
    size 4M 
    create 770 somegroup someuser 
    rotate 4 
    missingok 
    copytruncate 
} 

什麼,它說:

  • size 4M:它的大小達到4M後旋轉文件
  • create ...:創建新的文件給定permisions(由你所在的用戶組和用戶名替換somegroup someuser
  • rotate 4:保留最後4個日誌文件(test.log,test.log.1等)
  • missingOk一個copyTruncate:避免一些錯誤(詳情參見該DOC)

檢查你的文件是正確的,通過執行:

sudo logrotate /etc/logrotate.d/test 

享受。

更多關於logrotate:https://support.rackspace.com/how-to/understanding-logrotate-utility/