私は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
これは非常にエレガントではありません。