apmd(8) FreeBSD 一般コマンドマニュアル

apmd

前のページ 上に戻る 次のページ

apmd




解説

     apmd は、指定した Advanced Power Management (APM) イベントを監視し、いず
     れかのイベントが発生した場合、対応するコマンドシーケンスを実行します。設
     定ファイルで指定されたイベントのみが apmd へ通知され、それ以外のイベント
     は無視されます。 APM BIOS によって発行されたイベントに対して、 apmd は設
     定ファイルで指定されたコマンドシーケンスを実行します。 apmd をサスペンド/
     スタンバイを監視するようにして起動すると、カーネルはそれらの要求イベント
     に対する処理を行いません。そのためそれらのイベント発生時に処理をさせたい
     場合は、適切なコマンドまたは組み込み関数を明示的に設定ファイルに指定する
     必要があります。

     apmd は以下の実行時オプションを理解します。

     -d       デバッグモードで起動します。デーモンモードではなくフォアグラウン
              ドで動作します。

     -f file  デフォルトの設定ファイル /etc/apmd.conf の代りに使用する、別の設
              定ファイル file を指定します。

     -v       冗長モードで動作します。

     apmd は起動時に設定ファイル (デフォルトは /etc/apmd.conf) を読み込み、監
     視すべきイベントを APM デバイスドライバへ通知します。終了時には APM デバ
     イスドライバはイベントの監視を自動的に解除します。

     apmd プロセスがシグナル SIGHUP を受信すると、設定ファイルを読み込み直し
     て、設定の変更内容を APM デバイスドライバに通知します。

     apmd は、デバイスファイル /dev/apmctl を経由して、イベントの受け取りや
     APM システム制御用の ioctl(2) 要求を発行します。このデバイスファイルは排
     他制御されてオープンされるため、 apmd プロセスは同時に 1 つのみ起動可能で
     す。

     apmd が APM イベントを受け取ると、設定ファイルで指定されたイベントに対応
     するコマンドリストを実行するために子プロセスを生成し、再び APM イベントの
     待ち状態になります。生成された子プロセスは、指定されたコマンドを 1 つずつ
     列挙された順番に実行します。

     apmd が SUSPEND/STANDBY 要求に対するコマンドリストを処理している間、カー
     ネル内の APM デバイスドライバは、APM BIOS に対して毎秒 1 回以上通知を発行
     し続けます。これによって BIOS は、コマンド処理中であり要求がまだ完結して
     いないことを認識します。

     apmd デーモンはファイル /var/run/apmd.pid を作成し、プロセス ID を記録し
     ます。これは apmd を kill や、設定ファイルを読み込ませるために使えます。


設定ファイル

     apmd の設定ファイルの構造は非常にシンプルです。例えば次のようになります。

     apm_event SUSPENDREQ {
             exec "sync && sync && sync";

               複数のイベントに対して同じ処理を実行したい場合は、それらのイベ
               ント名をコンマで区切って指定します。有効なイベント名は次の通り
               です。

               - apmd が起動されているとカーネルでの処理を行わなくなるイベン
               ト:

                     STANDBYREQ
                     USERSTANDBYREQ
                     SUSPENDREQ      コマンドリストに sync を含めることをおす
                                     すめします
                     USERSUSPENDREQ  コマンドリストに sync を含めることをおす
                                     すめします
                     BATTERYLOW      コマンドリストは zzz のみをおすすめします

               - カーネルの処理終了後に apmd へ通知されるイベント:

                     NORMRESUME
                     CRITRESUME
                     STANDBYRESUME
                     POWERSTATECHANGE
                     UPDATETIME
                     CAPABILITIESCHANGE

               上記以外のイベントは apmd へ通知されません。

     o   コマンドライン文法

               前述の例では、 `exec' から始まる 3 行はイベントに対するコマンド
               です。それぞれの行はセミコロンで終了している必要があります。イ
               ベントに対するコマンドリストは `{' と `}' で囲みます。 apmd は
               ダブルクォーテーションで囲まれたコマンドの実行に system(3) と同
               様に /bin/sh を使用します。各コマンドはコマンドリストの最後に到
               達するか 0 以外の終了コードで終わるまで順番に実行されます。
               apmd は、失敗したコマンドの終了コードを、 syslog(3) 経由で報告
               します。加えて APM BIOS からの要求イベントを取り消します。

     o   組み込み関数

               コマンド行の代りに apmd の組み込み関数を指定できます。組み込み
               関数はコマンド行と同様にセミコロンで終了します。次の組み込み関
               数が現在サポートされています。

               - reject:

                     APM BIOS からの直前の要求を拒否します。ディスプレイを閉じ
                     た時に発生する SUSPEND 要求を拒否して、代りに STANDBY 状
                     態にしたい場合などに使用します。


使用例

     設定ファイルのサンプルには、以下のものが含まれています。

     # resume event configuration for serial mouse users by
     # reinitializing a moused(8) connected to a serial port.
     #
     #apm_event NORMRESUME {
     #       exec "kill -HUP `cat /var/run/moused.pid`";
     #}

     # suspend request event configuration for ATA HDD users:
     # execute standby instead of suspend.
     #
     #apm_event SUSPENDREQ {
     #       reject;
     #       exec "sync && sync && sync";
     #       exec "sleep 1";
     #       exec "apm -Z";
     #}


関連ファイル

     /etc/apmd.conf
     /dev/apmctl
     /var/run/apmd.pid


関連項目

     apm(4), apm(8)


作者

     Mitsuru IWASAKI <iwasaki@FreeBSD.org>
     KOIE Hidetaka <koie@suri.co.jp>

     また、
     Warner Losh <imp@FreeBSD.org>,
     Hiroshi Yamashita <bluemoon@msj.biglobe.ne.jp>,
     Yoshihiko SARUMARU <mistral@imasy.or.jp>,
     Norihiro Kumagai <kuma@nk.rim.or.jp>,
     NAKAGAWA Yoshihisa <nakagawa@jp.FreeBSD.org>,
     Nick Hilliard <nick@foobar.org> による貢献がありました。


歴史

     apmd コマンドは FreeBSD 3.3 から登場しました。

FreeBSD 4.4                      June 28, 1999                     FreeBSD 4.4

ABELNET VPSサービス