Re: [問題] stdout redirection應用問題

作者: p2k (pank)   2021-12-23 21:13:38
※ 引述《icetofux ()》之銘言:
: 我寫了一支長時間運行的程式,在運行過程中會持續產生訊息至stdout,我不想太
: 頻繁的讀寫儲存空間,所以我目前以
: $my_app > /dev/shm/my_app.log
: 的方式運行程式,將訊息輸出到記憶體構成的檔案系統中,當想要看即時訊息時以
: $tail -f /dev/shm/my_app.log
: 的方式將輸出訊息顯示到終端,目前運行的還不錯,但考慮到如果程式持續運行超過
: 一個月,我的/dev/shm/可能會不夠,請問有沒有什麼方法讓my_app.log在超過指定
: 行數的時候,清除最頂端開始的n行呢?
: 謝謝。
建立一個 script /usr/local/bin/log-dispatch.sh
由它幫你分檔,下面的例子是以分為檔案
#!/bin/sh
while read -r LINE
do
echo `date`,$LINE >> /dev/shm/`date +%Y%m%d%H%M`.log
done
根據 log 量可調整切檔週期
date +%Y%m%d%H #每小時
date +%Y%m%d #每天
另外再排程清理比較舊的檔
作者: p2k (pank)   2021-12-25 19:54:00
使用是 my_app | /usr/local/bin/log-dispatch.sh

Links booklink

Contact Us: admin [ a t ] ucptt.com