dmesg 解析に基づく自動 rmmod/modprobe

dmesg 解析に基づく自動 rmmod/modprobe

私はMacBooPro10,1 Debianの安定(デフォルトインストールrsyslogd)システムを使用しています。

$ dmesg
[...]
[1910159.662967] bcm5974: bad trackpad package, length: 8

解決策は簡単です。

$ sudo rmmod bcm5974 && sudo modprobe bcm5974

しかし、自動的に実行する方が良いです。

dmesg出力を解析してコマンド(電源)をトリガーするにはsudo

答え1

プログラムがその行と一致する場合は、rsyslogd実行を要求できます。/etc/rsyslog.d/my.confたとえば、次の行を含むファイルを作成します。

:msg, contains, "bad trackpad package" ^/bin/mytrackpadreset

/bin/mytrackpadresetこれはメッセージが表示されたときにスクリプトを実行し、メッセージ全体を単一の文字列引数として渡します。デーモンはrootとして実行されるので、必要なrmmod bcm5974 && modprobe bcm5974コマンドをスクリプトに簡単に入れることができますが、まず適切なPATHを設定する必要があるかもしれません。

以前はrsyslogdスクリプトが終わるまで待ってから続ければいいと思っていましたが、今はそうではありません。このメッセージが一度に複数回表示されることが予想される場合は、それを複数回並列に実行できるようにスクリプトで追加の操作を実行する必要があります。

この以前の形式(^program)はオフログモジュールは、一度起動し、継続的に実行して標準入力にメッセージを渡したいプログラムに便利です。

答え2

少し-ingを使用すると、grep出力と同じ情報を見つけることができます。dmesg/var/log/messages

リソースを無駄にせず(そして「1分」もなく)、このファイルを見る問題が残っています。cronこれは非常にエレガントではありません。

関連情報