마지막 일시 중단 시간 결정(-to-ram)

마지막 일시 중단 시간 결정(-to-ram)

매일 밤 실행되는 백업 스크립트가 있습니다. 내 (Linux) 호스트가 일시 중지된 경우 스크립트가 실행되기 전에 다른 호스트에 의해 깨어납니다.

백업이 완료된 후 호스트를 다시 일시 중지할 수 있기를 원합니다.제공되는스크립트를 실행하기 위해 깨어납니다. 이전에 실행 중이었다면 계속 실행되기를 원합니다.

호스트가 일시 중단 상태에서 메모리로 마지막으로 깨어난 시간에 대한 정보를 얻을 수 있는 방법이 있습니까?

답변1

배포판에는 일시 중지/최대 절전 모드/종료하려고 할 때와 다시 시작/열 때 일부 스크립트를 실행하는 전원 관리 프레임워크(자체 일시 중지되었으므로 분명함)가 있습니다. "전원 관리"를 검색하면 이에 대한 좋은 문서를 찾을 수 있습니다.

작업은 스크립트를 적절한 디렉터리에 배치하는 것일 수도 있습니다. 스크립트는 다음과 같이 간단할 수 있습니다 date +%s > /var/last-wake-time. 그러면 기존 스크립트는 단순히 파일을 살펴봅니다.

일반적으로 모든 배포판에 전원 관리 유틸리티가 제공되는 것은 아니며 살펴볼 여러 도구가 있습니다. acpid, uPower, 및 을 볼 수 있습니다 pm-utils.laptop-mode tools

답변2

나는 즉시 작동하므로 pm-utils 로그 파일을 확인했습니다. 그러나 이는 pm-utils 로그 메시지의 형식에 따라 달라지므로 새 버전의 pm-utils에서는 작동하지 않을 수 있습니다.

현재 Arch Linux 및 OpenSuSE 11.4/Tumbleweed 및 pm-utils가 아직 패치되지 않은 다른 모든 배포판에서 작동합니다.

다음 코드는 머신이 지난 10분(600초) 이내에 일시 중지 상태에서 깨어난 경우 NEED_SUSPEND를 1로 설정합니다.

# Check if we need to suspend afterwards
if [[ -e /var/log/pm-suspend.log ]]; then
    RESUME_DATE="$(egrep 'Running hooks for (resume|thaw)' /var/log/pm-suspend.log | tail -n 1 | sed 's/^\(.*\):.*$/\1/')"
    if [[ -n "$RESUME_DATE" ]]; then
        RESUME_SECS="$(date --date="$RESUME_DATE" +%s)"
        NOW_SECS="$(date +%s)"
        SECS_SINCE_RESUME=$(( $NOW_SECS - $RESUME_SECS ))
        if [[ $SECS_SINCE_RESUME -lt 600 ]]; then
            NEED_SUSPEND=1
        fi
    fi
fi

관련 정보