Wo sollen Skripte abgelegt werden, die ausgeführt werden, wenn der Computer wieder aufgenommen wird?

8

Ich muss den Bildschirm sperren, wenn mein Computer aus dem Arbeitssperre geweckt wird.

Also habe ich versucht, das folgende Skript in /usr/lib/pm-utils/sleep.dund zu setzen /etc/pm/sleep.d, aber es wurde nie ausgeführt:

#!/bin/sh

case "$1" in
    hibernate|suspend)
        ;;
    thaw|resume)
        vlock -ans
        ;;
    *) exit $NA
        ;;
esac

PS: Ist es pm-suspendnicht pm-hibernate.

BEARBEITEN

Versuchte systemd Service auch, kein Glück:

# /etc/systemd/system/[email protected]
[Unit]
Description=User resume actions
After=suspend.target

[Service]
User=root
Type=simple
ExecStart=vlock -ans

[Install]
WantedBy=suspend.target

Und ich habe auch angerufen systemctl enable [email protected], vlock wurde noch nicht angerufen.

Gänseblümchen
quelle
3
Sind Sie sicher, dass es nicht ausgeführt wird? Können Sie versuchen, es einfach zu protokollieren oder so etwas zu tunecho executed script >> /tmp/resume
Ulrich Dangel

Antworten:

2

AFAIK ExecStartmöchte einen vollständigen Pfad zur ausführbaren Datei.

Versuchen Sie es mit ExecStart=/usr/bin/vlock -ansin Ihrem/etc/systemd/system/[email protected]

lviggiani
quelle
1

Haben Sie die Berechtigungen und den Eigentümer wie im Wiki beschrieben festgelegt?

Stellen Sie sicher, dass das Skript ausführbar ist (chmod 755) und root: root gehört

Mibitzi
quelle
1

Du versuchst deinen eigenen Haken zu kreieren, oder? Ich lese die Arch Linux-Dokumentation zu pm-utils (Link unten) und überprüfe zuerst diese Dinge:

  • Skriptname (beginnen Sie mit zwei Ziffern und befolgen Sie das Schema in den Dokumenten)
  • Skriptspeicherort: /etc/pm/sleep.d ist der richtige Ort
  • Skriptmodi: chmod + x /etc/pm/sleep.d/66scriptname

Wenn Sie sicher sind, dass Sie alle richtig verstanden haben, ziehen Sie das Skript selbst in Betracht.

Hier ist ein Link zu den Dokumenten, die ich darüber lese: https://wiki.archlinux.org/index.php/pm-utils#Creating_your_own_hooks

Ihr Skript entspricht nicht dem dort gezeigten. Sie rufen / bin / sh anstelle von / bin / bash auf. Sie verwenden Doppel-Qoutes um 1 US-Dollar und diese nicht. Sie kombinieren Optionen und sie nicht. Alles sollte in Ordnung sein, oder? Außer vielleicht das Sh gegen Bash.

Wie wäre es, wenn Sie einige Logger- oder Echo-Anweisungen zum Debuggen einfügen und dann die Protokolle überprüfen, um festzustellen, ob Ihr Skript gestartet wird. Und wenn ja, wie weit kommt es?

Mike Diehn
quelle
Funktioniert systemd mit pm-utils? Da bin ich mir nicht sicher ;-)
Gänseblümchen
0

Ich habe alle Verzeichnisse mit a herausgefunden "sudo strace pm-hibernate 2>/root/myfile.log", oder Sie können den pm-Ruhezustand durch pm-suspend ersetzen. Nach einiger Zeit schaltet sich die Maschine aus. Lesen Sie dann beim erneuten Einschalten / Fortsetzen die Datei myfile.log. Darin befinden sich alle Skripte, Konfigurationen und Protokolldateien, auf die zugegriffen / geschrieben wurde.

Für meine Fedora 20 sind sie:

/usr/lib64/pm-utils/pm-functions
/usr/lib64/pm-utils/defaults
/usr/lib64/pm-utils/module.d
/etc/pm/config.d
/etc/pm/pm-suspend.config.d
/var/run/pm-utils/locks/pm-suspsnd.lock
/var/run/pm-utils/pm-suspend/storage/parameters

usw. und mehrere andere Verzeichnisse.

Bedienen Sie sich mit Ihrer spezifischen Distribution einer bestimmten Version (Fedora 20 verwendet übrigens systemd).

Peter Teoh
quelle