APMD(8)

명칭
apmd - Advanced Power Management 감시 demon

서식
apmd [-d] [-f -file] [-v]

해설
apmd 유틸리티는, 지정한 Advanced Power Management (APM) 이벤트를 감시해, 몇개의 이벤트가 발생했을 경우, 대응하는 명령 순차 순서를 실행합니다. 설정 파일로 지정된 이벤트만이 apmd 에 통지되어 그 이외의 이벤트는 무시됩니다. APM BIOS 에 의해 발행되었다 이벤트에 대해서, apmd (은)는 설정 파일로 지정된 명령 순차 순서를 실행합니다. apmd (을)를 중지/스탠바이를 감시하도록(듯이) 해 기동하면(자), 커널은 그러한 요구 이벤트에 대한다 처리를 실시하지 않습니다. 그 때문에 그러한 이벤트 발생시에 처리를 시키고 싶은 경우는, 적절한 명령 또는 짜넣어 함수를 명시적으로 설정 파일로 지정할 필요가 있습니다.

apmd 유틸리티는 이하의 실행시 옵션을 이해합니다.

-d  디버그 모드로 기동합니다. demon 모드는 아니고 foreground로 동작합니다.

-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 이벤트를 받으면(자), 설정 파일로 지정되었다 이벤트에 대응하는 명령 리스트를 실행하기 위해서 child process를 생성해, 다시 APM 이벤트의 대기 상태가 됩니다. 생성된 child process는, 지정된 명령을 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";
            exec "sleep 1";
            exec "zzz";
    }

이 예에서는, APM 이벤트 ‘SUSPENDREQ’ (디스플레이를 닫았을 때 등에 발생합니다)(을)를 apmd 하지만 받으면(자), ‘sync’ 명령을 3 회 실행해, 조금 기다린 뒤에 zzz (apm -z) (을)를 실행해 시스템을 중지 시킵니다.

•   apm_event 키워드

    ‘apm_event’ (은)는 키워드이며, 이벤트마다의 설정의 개시를 지시합니다.

•   APM 이벤트

    복수의 이벤트에 대해서 같은 처리를 실행하고 싶은 경우는, 그러한 이벤트명을 콤마로 단락지어 지정합니다. 유효한 이벤트명은 다음과 같습니다.

    - apmd 하지만 기동되고 있으면(자) 커널에서의 처리를 실시하지 않게 되는 이벤트:

    STANDBYREQ
    USERSTANDBYREQ
    SUSPENDREQ
        명령 리스트에 sync 를 포함하는 것을 추천합니다
    USERSUSPENDREQ
        명령 리스트에 sync 를 포함하는 것을 추천합니다
    BATTERYLOW
        명령 리스트는 zzz 만을 추천합니다

    - 커널의 처리 종료후에 apmd 에 통지되는 이벤트:

    NORMRESUME
    CRITRESUME
    STANDBYRESUME
    POWERSTATECHANGE
    UPDATETIME
    CAPABILITIESCHANGE

    상기 이외의 이벤트는 apmd 에 통지되지 않습니다.

•   명령행 문법

    전술의 예에서는, ‘exec’ (으)로부터 시작되는 3 행은 이벤트에 대한 명령입니다. 각각의 행은 세미콜론으로 종료하고 있을 필요가 있습니다. 이벤트에 대한 명령 리스트는 ‘{’ (와)과 ‘}’ 그리고 둘러쌉니다. apmd 유틸리티는, 더블 쿼테이션으로 둘러싸인 명령의 실행에 system(3) (와)과 같게 /bin/sh (을)를 사용합니다. 각 명령은 커멘드 리스트의 마지막에 도달할까 0 이외의 종료 코드로 끝날 때까지 차례로 실행됩니다. apmd 유틸리티는, 실패한 명령의 종료 코드를, syslog(3) 경유로 보고합니다. 더해 APM BIOS 로부터의 요구 이벤트를 취소합니다.

•   편입 함수

    명령행대신에 apmd 의 편입 함수를 지정할 수 있습니다. 편입 함수는 명령행과 같게 세미콜론으로 종료합니다. 다음의 편입 함수가 현재 서포트되고 있습니다.

    - reject:

    APM BIOS 로부터의 직전의 요구를 거부합니다. 디스플레이를 닫았을 때에 발생 SUSPEND 요구를 거부해, 대신에 STANDBY 상태로 하고 싶은 경우 등에 사용해

사용예
설정 파일의 샘플에는, 이하의 것이 포함되어 있습니다.

    apm_event SUSPENDREQ {
            exec "/etc/rc.suspend";
    }
    apm_event USERSUSPENDREQ {
            exec "sync && sync && sync";
            exec "sleep 1";
            exec "apm -z";
    }
    apm_event NORMRESUME, STANDBYRESUME {
            exec "/etc/rc.resume";
    }
    # 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 (으)로부터 등장했습니다.