Re: [問題] 請問一下可以由dmesg的資訊來觸發事件嗎?
※ 引述《shushu.bbs@ptt.cc (又過一個階段了)》之銘言:
> 我想要從dmesg來獲得error資訊
> 並在出現error時去執行kill pid
> 該如何實現呢?
> 我應該可以做一個迴圈一直去偵測dmesg的error
> 但我該如何在偵測到error時去執行我想做的事情呢?
> # while true ; do dmesg -c | grep error ??? done ;
> 我有想到將error訊息輸入到文字檔裡
> 然後用wc去讀取,只要行數大於1就執行kill pid
> 還是有其他更可行的方法呢??
> 先謝謝各位大師
我是肉腳路人。
其實不是很麻煩,首先看 grep 的 manpage,其中 EXIT STATUS section
有以下的敘述:
EXIT STATUS
Normally, the exit status is 0 if selected lines are found and 1
otherwise.
所以可以這樣做(假設使用 bash):
while true; do
dmesg -c | grep -q 'error' && {
???
}
sleep 5
done
??? 的部分就是當 grep 有從 dmesg 輸出中找到 'error' 字串時要做的事情。
詳細細節請參考 grep 以及 bash 的 manpage。如果不用 bash,或者希望 script
更一般化,可以用 if 或 test 或 [ 等指令取代 && 操作子,只是寫法會有一點
不同。
--
※ Origin: SayYA 資訊站 <bbs.sayya.org>
◆ From: c-76-111-34-186.hsd1.ga.comcast.net
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):