@ l0b0の答えの変形:
dmesg --follow | awk '
/BUG: workqueue lockup/ { system ("killall someprocessname") ; rem="done at each occurrence. You could add further things, like print to a logfile, etc.,"
}'
これでループを実行してみましょう。これにはいくつかの利点があります。
- そのプロセスが死ぬまで機能します。
- また
killall
、検索文字列 "BUG:workqueue lockup"が発生するたびに1つを超える呼び出しは行われません。これにより、他の回答が改善されます。
テストするには:あなたが名前のスクリプトにこれを置くことができるthescript
、とやるnohup thescript &
ので、それはthescript
あなたがあなたのセッションを終了した後も実行し続けます。
満足のいく結果が得られたら、それを強制終了し、(シェルを使用して毎回実行する代わりにnohup
)daemon script
現在のランレベルで開始できるに変換できます。
すなわち:モデルとして別のスクリプトを使用して、あなたが変更することができます(少なくとも開始、停止およびステータスのセクションを持っている必要があります)thescript
適切にして、内に配置し/etc/rc.d/init.d
、そしてそれが命名にシンボリックリンクを持ってSxxthescript
適切な(S)の下で/etc/rc.d/rcN
、N
というA通常のランレベルの番号(who -a
現在のランレベルを知るには、上の行を参照してください)。またKxxthescript
、すべての(またはほぼすべての)ランレベルに適切なシンボリックリンクを設定して、ランレベルを切り替えるときにスクリプトが適切に強制終了されるようにします。
または、「適切なこと」を実行して、systemdまたはディストリビューションが使用する同等のシステムを介して実行/停止します。