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/resume@.service
[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 resume@.service, vlock wurde noch nicht angerufen.


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/resume@.service



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?


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).

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.