pm-utils: 정지 스크립트에 네트워크가 없나요?

pm-utils: 정지 스크립트에 네트워크가 없나요?

/etc/pm/suspend.d/시스템이 정지되기 전에 (매우 짧은 시간 동안) 네트워크 액세스가 필요한 스크립트를 넣고 싶습니다 . 그러나 "001_something"이라는 스크립트를 사용해도 네트워크에 액세스할 /etc/pm/suspend.d/수 없습니다 . /usr/lib/pm-utils/sleep.d/스크립트가 실행되기 전에는 비활성화된 것으로 보입니다.

네트워크가 비활성화된 이유는 무엇입니까? 어떻게 활성화할 수 있나요?

게다가 /var/log시스템 복원 후 정지된 부분의 파일을 덮어쓰는 것 같은데요?

다음은 다음에서 관찰됩니다 daemon.log.

Feb 7 22:09:04 zenbook NetworkManager[3606]: <info> sleep requested (sleeping: no enabled: yes)·
Feb 7 22:09:04 zenbook NetworkManager[3606]: <info> sleeping or disabling...·
Feb 7 22:09:04 zenbook NetworkManager[3606]: <info> (wlan0): now unmanaged·
Feb 7 22:09:04 zenbook NetworkManager[3606]: <info> (wlan0): device state change: activated -> unmanaged (reason 'sleeping') [100 10 37]·
Feb 7 22:09:04 zenbook NetworkManager[3606]: <info> (wlan0): deactivating device (reason 'sleeping') [37]·

저는 테스트용으로 Debian과 Gnome 3을 사용하고 있습니다.

편집: 이 질문은 pm-utils와 관련이 없습니다. 내가 아는 한 NetworkManager는 네트워킹을 비활성화합니다(nm-manager.c:do_sleep_wake에서). 이 문제를 해결하는 방법을 아직 모르겠습니다. 바라보다NetworkManager: 시스템을 절전 모드로 전환할 때 네트워킹 비활성화

답변1

1. 별난?

먼저 일시 중지가 제대로 작동하는지 확인하겠습니다. 단점 페이지를 확인하고 서스펜션이 제대로 작동하는지, 그리고 겉으로 보기엔 평범해 보이지 않는지 확인하세요.

2. 001_something 스크립트가 실행 가능합니까?

스크립트가 실행 가능한지 확인하세요 001_something!

% chmod +x 001_something

3. 001_something 스크립트가 올바르게 보입니까?

스크립트가 pm-utils예상대로 작동하는지 확인하세요.

샘플 스크립트

#!/bin/bash
case "$1" in
    hibernate|suspend)
        ACTION BEFORE SUSPEND/HIBERNATE
        ;;
    thaw|resume)
        ACTION AFTER RESUME
        ;;
    *)
        ;;
esac
exit $?

노트:hibernate|suspendCase/switch 문의 올바른 부분 에 네트워크를 사용하려는 시도를 넣고 있습니까 ?

4. .d 디렉토리의 파일이 제대로 작동합니까(/etc/pm/suspens.d/ 또는 /usr/lib/pm-utils/sleep.d/)?

001_something다음으로, 스크립트가 작동하는지 알 수 있도록 파일의 문자열에 에코를 표시하여 스크립트가 실제로 올바르게 일시 중지/최대 절전 모드에 들어가고 있는지 확인합니다 .

echo "yup I'm working" > /tmp/pmck_`date +%Y-%T`.log

pmck_2013-16:08:11.log그러면 다음과 같은 내용이 표시됩니다 /tmp.

5./var/로그?

위와 같은 상황이라면.디디렉터리가 실행 중이면 디렉터리를 만들고 덮어썼다고 생각되는 파일을 아래의 다른 파일에 복사하여 001_something최소한 로깅이 올바른지 확인할 수 있습니다. 이를 통해 무슨 일이 일어나고 있는지 더 깊이 이해할 수 있습니다./var/log/pm-suspend.log/tmp

cp /var/log/pm-suspend.log /tmp/pmlg_`date +%Y-%T`.log

6. 수면고리의 수는?

후크 파일 이름을 00-something대신에 변경할 수도 있나요 001_something? 확실하지는 않지만 매뉴얼 페이지에 이러한 값이 나와 있습니다.

SLEEP HOOK ORDERING CONVENTION
       00 - 49
           User and most package supplied hooks. If a hook assumes that all of the usual services and userspace infrastructure
           is still running, it should be here.

       50 - 74
           Service handling hooks. Hooks that start or stop a service belong in this range. At or before 50, hooks can assume
           that all services are still enabled.

       75 - 89
           Module and non-core hardware handling. If a hook needs to load/unload a module, or if it needs to place non-video
           hardware that would otherwise break suspend or hibernate into a safe state, it belongs in this range. At or before
           75, hooks can assume all modules are still loaded.

       90 - 99
           Reserved for critical suspend hooks.

7. 인터넷 연결?

스크립트 에 다음을 추가합니다 001_something.

TMP=/tmp/pmip_`date +%Y-%T`.log

# network status?
ip link show > $TMP

# dns working?
dig google.com +answer >> $TMP

# can we ping google?
ping -c 5 www.google.com >> $TMP

8. pm-utils, HAL 및 Wheezy에 버그가 있나요?

내가 우연히 만났어이 데비안 버그 보고서이것이 문제의 원인이 될 수 있는지 궁금합니다. 이 버그는 HAL 및 pm-utils의 문제를 설명합니다. HAL을 삭제하면 네트워크 문제가 해결되는 것 같습니다.

9. 더 자세한 pm-utils 디버깅

게다가이 링크Debian 관련 일시 중지/재개 문제에 대한 제안을 제공합니다. PM_DEBUG=true파일에 변수를 설정하여 pm-utils 로깅을 늘리는 방법이 언급되어 있습니다 /usr/lib/pm-utils/pm-functions.

발췌

pm-utils 디버깅 활성화

일시중단 및 재개된 프로세스의 로그는 /var/log/pm-suspens.log 파일에 있습니다. 기본적으로 여기에는 상당히 자세한 정보가 포함되어 있습니다. /usr/lib/pm-utils/pm-functions 파일 시작 부분에 import PM_DEBUG=true 행을 삽입하여 디버깅에 대한 추가 정보를 활성화할 수 있습니다.

아마도 이것은 pm-utils에서 무슨 일이 일어나고 있는지에 대해 좀 더 통찰력을 제공하는 데 도움이 될 수 있습니다!

10. ACPI는 이전에 네트워크를 종료했 pm-utils습니까?

문제 pm-utilsacpi. 노트북 덮개를 닫으면 acpi이와 관련된 작업이 있는 이벤트가 트리거됩니다.

이벤트 파일

% more /etc/acpi/events/lm_lid
event=button[ /]lid
action=/etc/acpi/actions/lm_lid.sh %e

조치 문서

% more /etc/acpi/actions/lm_lid.sh
#! /bin/sh

test -f /usr/sbin/laptop_mode || exit 0

# lid button pressed/released event handler

/usr/sbin/laptop_mode auto

자세히 살펴보면 laptop_mode이 도구가 여러 작업을 수행하는 역할을 담당하며 그 중 하나가 네트워크 장치의 상태를 관리한다는 것을 알 수 있습니다.

랩탑 모드는 /etc/laptop-mode/conf.d다른 UNIX 도구와 유사한 디렉토리를 유지합니다. 이더넷 및 무선 네트워크 장비와 관련된 파일이 있습니다.

기본 구성에서. 파일, /etc/laptop-mode/laptop-mode.conf은 더 자세한 메시지를 열 수 있는 기능입니다. 어쩌면 이것이 무슨 일이 일어나고 있는지에 대한 추가적인 단서를 제공할 수 있을까요?

VERBOSE_OUTPUT=1

OP의 피드백을 바탕으로 시도해 볼 위 사항을 요약합니다.

1:배터리 사용량과 노트북의 절전 LED에 관한 한 일시 중지 기능이 작동합니다. 그렇지 않으면 위의 웹 페이지가 답변을 찾는 데 어떻게 도움이 될지 알 수 없습니다.

2:이것은.

삼:대략 맞는 것 같습니다.

4:그 서류를 받았어요.

5:해당 로그 파일을 받았지만 도움이 되지 않습니다.

6:001을 00으로 바꾸면 아무런 차이가 없습니다.

7:이 섹션의 내용은 네트워크 연결만 테스트합니다. 내 질문에 명시된 대로 스크립트가 실행된 후에는 네트워크 연결이 없습니다. wlan0 장치가 다운되었습니다. 로그 파일:http://paste.debian.net/231760.

노트:dig를 설치하지 않았지만(paste.debian.net 로그에 오류 메시지가 표시됨) 분명히 네트워크에 액세스할 수 없습니다(위에서 언급한 대로). iwconfig, ip link show, ping 등의 출력을 확인하면 다운된 것을 알 수 있습니다.... Perl 스크립트가 문제의 스크립트입니다.

그런데 /usr/lib/pm-utils/bin/pm-actionupowerd의 첫 번째 줄이 실행되면 네트워크가 이미 다운되었습니다.

8:hal이 설치되어 있으므로 제거해도 아무 변화가 없습니다.

관련 정보