温度がしきい値を超えると、コマンド実行、デーモンは不要

温度がしきい値を超えると、コマンド実行、デーモンは不要

ラップトップが高すぎる場合は、特定のコマンドを実行する必要があります(たとえば、ラップトップがひどくシャットダウンしてハードドライブが損傷するのを防ぐために、FirefoxまたはVirtualboxに停止信号を送信します)。

定期的に温度を確認しながら、無限の繰り返しプログラムを簡単に作成できます。これ質問に対する答えはこのアプローチを使用します。

しかし、私は自分のデーモンを実行するのを避け、代わりに私のプログラムを既存のデーモンに接続したいと思います。たとえば、システムログに次の情報を表示できます。

5月5日 02:52:27 myhostname カーネル: [9141.022262] intel ips 0000:00:1f.6: MCP 制限超過: 平均一時 9276, 制限 9000

したがって、マイコンピュータには温度を確認し、条件に応じて特定のタスクをトリガーするコードが既にあります(たとえば、温度が9000を超えると警告メッセージを記録するなど)。別の例は、同じ温度に応じてファンの速度が速くなることである。

私のプログラムを自分のコンピュータの既存のコードにどのように接続しますか?ファンドライバの速度変更とコア温度警告メッセージは同じコードで実行されますか?これをどのように見つけることができますか?

答え1

この種の作業を監視するには、ある種のデーモンを実行する必要があります。ハードウェアセンサーは単に非アクティブなデータソースであり、通常はそれ自体を操作できません。

出てカスタムコードを書きたい場合は、インストールを検討してください。collectd-sensorsパック(あなたのディストリビューションは別の名前で呼び出すことができます。)温度記録を維持します。トレース温度データを設定したら、次のことがcollectdできるはずです。収集通知の設定そのような活動のために。

答え2

私のプログラムをこのコードにどのように添付できますか?

この特定の出力はカーネルから出てくるので可能これを行うためにカーネルモジュールを作成する機能、または情報にグローバルにアクセスできない場合は、既存のモジュールにパッチを適用できます。

すでにWRTデーモンが実行されているので、次のものを使用できます。cronそして1分ごとに確認してみてください。

分単位よりも細かい単位が必要な場合は、直接ループを作成したり、既にこれを実行できるツールを見つける必要があります。一部のGUIシステムモニタでは、任意のプロセスを実行できるように警告を設定できますgkrellm。グーグルだけではわかりにくいですconky。)

答え3

DBUSまたはACPIイベントは、これらの「イベント」をロックし、必要な操作を実行するようにコマンドを実行する場所のようです。私はdbus-monitorこれらのイベントを「キャプチャ」してスクリプトを実行するために使用できる方法を示しました。

次のタイトルのU&L Q&Aに対する私の答えを確認してください。libnotifyを使用してスクリプトを実行できますか?

答え4

これを行うには、ログメッセージを実行するのと同じ温度でFirefox / Virtualboxのトリガーを使用し、syslog-ngを実行する必要があります。

syslog-ngは、特定のプログラムまたは特定のコンテンツからログに送信されたメッセージによってトリガーされる任意のコードを実行するように設定できます。

syslog-ng.conf で新しいターゲットを追加します。

destination d_high_temp { program("/path/to/OPs/temperature_script"); };

新しいフィルタもあります。

filter f_high_temp { match("MCP limit exceeded" value("MESSAGE")); };

ついに

log { source(src); filter(f_high_temp); destination(d_high_temp); };

もはやデーモンは実行されませんが、必要なプログラムはすべて終了できます。

関連情報