pm-utils: Kein Netzwerk in Suspend-Skripten?

8

Ich möchte ein Skript /etc/pm/suspend.d/einfügen, das Netzwerkzugriff benötigt (für eine sehr kurze Zeit), bevor das System angehalten werden kann. Aber auch mit Skripten namens „001_something“ in /etc/pm/suspend.d/und /usr/lib/pm-utils/sleep.d/ich bekomme keinen Netzwerkzugriff. Es scheint, dass dies deaktiviert ist, bevor die Skripte ausgeführt werden.

Warum ist das Netzwerk deaktiviert? Wie kann ich es aktivieren?

Außerdem kann ich die Datei pm-suspend.log in nicht verwenden /var/log. Es scheint, dass die Datei für den Suspend-Teil überschrieben wird, sobald das System wieder aufgenommen wird.

Folgendes wurde beobachtet in 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]·

Ich verwende Debian Testing mit Gnome 3.

EDIT: Das Problem hängt nicht mit pm-utils zusammen. Soweit ich weiß, deaktiviert NetworkManager das Netzwerk (in nm-manager.c: do_sleep_wake). Ich weiß noch nicht, wie ich das lösen soll. Siehe NetworkManager: Netzwerk deaktiviert, wenn das System in den Ruhezustand versetzt wird

C-Otto
quelle
Weitere Informationen: Ich verwende ein drahtloses Netzwerk mit NetworkManager.
C-Otto
Im Auftrag des OP migriert.
Slhck
Vielleicht wird Ihr Skript nach dem Herunterfahren des Netzwerks zu spät ausgeführt?
vonbrand
Ich denke schon. Aber wie kann ich es früher ausführen?
C-Otto
Ich hätte verwechseln sleep.dmit suspend.dder Frage, aber das ist nicht die Ursache des Problems.
C-Otto

Antworten:

7

1. Macken?

Zuerst würde ich bestätigen, dass Ihr Suspend korrekt funktioniert. Werfen Sie einen Blick auf die Seite mit den Macken und bestätigen Sie, dass Ihr Suspend ordnungsgemäß funktioniert und nicht nur so aussieht, als ob es richtig funktioniert.

2. Ist Ihr Skript 001_something ausführbar?

Stellen Sie sicher, dass Ihr 001_somethingSkript ausführbar ist!

% chmod +x 001_something

3. Sieht Ihr Skript 001_something korrekt aus?

Stellen Sie sicher, dass Ihr Skript den pm-utilsErwartungen entspricht.

Beispielskript

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

HINWEIS: Setzen Sie Ihre Versuche, das Netzwerk zu verwenden, in den hibernate|suspendrichtigen Teil der case / switch-Anweisung?

4. Datei im Verzeichnis .d funktioniert (/etc/pm/suspend.d/ oder /usr/lib/pm-utils/sleep.d/)?

Als nächstes würde ich bestätigen, dass Ihr 001_somethingSkript tatsächlich durch Suspend / Hibernate korrekt erfasst wird, indem es einfach in eine Datei mit einer Zeichenfolge zurückgesendet wird, damit Sie wissen, dass es funktioniert.

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

Sie sollten dann Dateien wie pmck_2013-16:08:11.login sehen /tmp.

5. / var / log?

Wenn das obige .d- Verzeichnis funktioniert, würde ich eine erstellen 001_somethingund die /var/log/pm-suspend.logDatei, von der Sie glauben, dass sie überschrieben wird, in eine andere Datei kopieren /tmplassen. Auf diese Weise können Sie zumindest bestätigen, dass die Protokollierung korrekt ist. Dies kann Ihnen weitere Einblicke in das Geschehen geben.

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

6. Schlafhakennummer?

Können Sie auch den Namen Ihrer Hook-Datei in 00-somethinganstelle von ändern 001_something? Nicht sicher, aber die Manpage zeigt diese Werte an.

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. Netzwerkkonnektivität?

Fügen Sie Ihrem 001_somethingSkript Folgendes hinzu :

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. Bug mit pm-utils, HAL und Wheezy?

Ich bin auf diesen Debian-Fehlerbericht gestoßen und habe mich gefragt, ob dies die Ursache für Ihr Problem sein könnte. Der Fehler beschreibt ein Problem mit HAL und pm-utils. Es klingt so, als würde das Entfernen von HAL das Netzwerkproblem beheben.

9. Ausführlicheres Debuggen von pm-utils

Zusätzlich gibt es diesen Link, der Ratschläge für Debian-spezifische Probleme beim Anhalten / Fortsetzen bietet. Es wird eine Möglichkeit erwähnt, die Protokollierung von pm-utils durch Festlegen einer Variablen PM_DEBUG=truein der /usr/lib/pm-utils/pm-functionsDatei zu erhöhen .

Auszug

Debugging für pm-utils aktivieren

Das Protokoll der Suspend- und Resume-Prozesse befindet sich in der Datei /var/log/pm-suspend.log. Es enthält standardmäßig mäßig ausführliche Informationen. Weitere Informationen können zum Debuggen aktiviert werden, indem der Zeilenexport PM_DEBUG = true am Anfang der Datei / usr / lib / pm-utils / pm-Funktionen eingefügt wird.

Vielleicht kann dies hilfreich sein, um Ihnen mehr Einblick in die Vorgänge mit pm-utils zu geben!

10. ACPI fährt das Netzwerk vor pm-utils?

Wenn das Problem nicht auftritt pm-utils, liegt es möglicherweise an acpi. Wenn Sie den Deckel Ihres Laptops schließen, wird ein acpiEreignis ausgelöst, dem eine Aktion zugeordnet ist.

EREIGNIS-Datei

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

ACTION-Datei

% 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

Bei näherer Betrachtung werden laptop_modeSie feststellen, dass dieses Tool für eine Vielzahl von Aufgaben verantwortlich ist, darunter die Verwaltung des Status Ihrer Netzwerkgeräte.

Der Laptop-Modus verwaltet ein Verzeichnis /etc/laptop-mode/conf.d, ähnlich wie bei anderen Unix-Tools. Darin befinden sich Dateien, die sich auf das Ethernet und drahtlose Netzwerkgeräte beziehen.

In der primären Konfiguration. Datei /etc/laptop-mode/laptop-mode.conf,, ist die Fähigkeit, ausführlichere Nachrichten zu aktivieren. Vielleicht bringt dies zusätzliches Licht auf das, was los ist?

VERBOSE_OUTPUT=1

Zusammenfassung der oben genannten Punkte basierend auf dem Feedback des OP

1: Suspend funktioniert in Bezug auf den Akkuverbrauch und die Sleep-LED auf meinem Notebook. Ansonsten verstehe ich nicht, wie die erwähnte Webseite mir helfen soll, es herauszufinden.

2: Es ist.

3: Es sieht richtig aus.

4: Ich bekomme diese Dateien.

5: Ich erhalte die entsprechenden Protokolldateien, diese sind jedoch für mich nicht hilfreich.

6: 00 statt 001 zeigt keinen Unterschied.

7: In diesem Abschnitt wird lediglich die Netzwerkkonnektivität getestet. Wie in meiner Frage erwähnt, habe ich keine Netzwerkverbindung, sobald das Skript ausgeführt wird. Das wlan0-Gerät ist ausgefallen. Die Protokolldateien: http://paste.debian.net/231760 .

HINWEIS: Ich hatte dig nicht installiert (Fehlermeldung im paste.debian.net-Protokoll), es ist jedoch klar, dass kein Netzwerkzugriff verfügbar ist (wie gesagt). Ich kann sehen, dass es nicht funktioniert, indem ich die Ausgabe von iwconfig, ip link show, ping, ... überprüfe. Das Perl-Skript ist das betreffende Skript.

Übrigens, sobald die erste Zeile von /usr/lib/pm-utils/bin/pm-action(von oben) ausgeführt wird, ist das Netzwerk bereits ausgefallen.

8: hal wurde installiert, das Entfernen ändert nichts.

slm
quelle
Nummerierung ist wichtig. Ich habe zuerst versucht, mein Skript als "001_blah.sh" zu benennen, und es wurde nicht aufgenommen. Es wurde erst abgeholt, nachdem ich es in "00_blah.sh" umbenannt hatte. Danke für die ausführliche Antwort BTW.
Sola