Ich habe doc gelesen und es ist mir immer noch unklar, ob das Folgende möglich ist:
Der darin definierte Dienst ~/.config/systemd/user/task.service
hängt von system sleep.target
( ~/.config/systemd/user/sleep.target.wants/task.service
) ab.
Jetzt erwarte ich task.service
zu starten, wenn ich laufe $ systemctl suspend
, wird jedoch task.service
nicht gestartet.
Ich führe Debian mit Systemd-Version 208 aus, die systemd --user
mehr oder weniger wie im ArchWiki beschrieben konfiguriert ist .
Ich frage mich , ob mein Szenario mit systemd überhaupt umgesetzt werden könnte, oder ist --system
und --user
vollständig getrennt von Design , so dass --user
Einheit nicht eine Abhängigkeit von einem sein kann --system
Einheit.
Falls es möglich ist, was könnte das Problem in meinem Fall sein?
Antworten:
Aus systemd / User - Archwiki
quelle
systemd
Benutzersitzungsdienste werden in einer vollständig separaten Instanz von ausgeführtsystemd
und können nicht direkt von Systemdiensten abhängen.Es gibt aber auch andere Möglichkeiten, das zu erreichen, was Sie wollen. Am saubersten ist es wahrscheinlich, wenn Sie festlegen, was Sie ausführen möchten, wenn das System in den Ruhezustand versetzt wird
logind
, und es dann als Hintergrunddämon ausführen.Eine allgemeinere Lösung wäre, einen Daemon - Hook in die
logind
Inhibitoren einzubinden (siehe systemd-lock-handler und xss-lock ) und dann, wenn das System in den Ruhezustand geht, ein Benutzersitzungsziel zu aktivieren, das Sie bestellen können unter.quelle
Neben der Antwort von @kyrias können Sie hier Ihr eigenes sleep.target auf Benutzerebene erstellen:
~ / .local / share / systemd / user / sleep.target
~ / .local / bin / watch_sleep
~ / .local / share / systemd / user / watch_sleep.service
Siehe meinen Blog-Beitrag https://medium.com/@aiguofer/systemd-sleep-target-for-user-level-10eb003b3bfd
quelle