Je lisais un document et je ne sais toujours pas si ce qui suit est possible:
service défini en ~/.config/systemd/user/task.service
fonction de system sleep.target
( ~/.config/systemd/user/sleep.target.wants/task.service
).
Maintenant, je m'attends task.service
à commencer quand je cours $ systemctl suspend
, mais task.service
n'est pas démarré.
J'utilise debian, avec la version systemd 208, systemd --user
configurée plus ou moins comme décrit sur l' ArchWiki .
Je me demande si mon scénario pourrait être mis en œuvre avec systemd du tout, ou sont --system
et --user
complètement isolé par la conception de sorte que l' --user
unité ne peut pas être une dépendance d'une --system
unité.
Si c'est possible, quel pourrait être le problème dans mon cas?
Réponses:
De systemd / User - Archwiki
la source
systemd
les services de session utilisateur s'exécutent dans une instance complètement distincte desystemd
, et n'ont aucun moyen de dépendre directement des services système.Il existe cependant d'autres façons d'accomplir ce que vous voulez. Le plus propre serait probablement de faire tout ce que vous voulez exécuter lorsque le système va s'accrochez aux
logind
inhibiteurs de, puis de l'exécuter en tant que démon d'arrière-plan.Une solution plus générale serait d'avoir un démon connecté aux
logind
inhibiteurs, (voir systemd-lock-handler et xss-lock ,) puis lorsque le système va se mettre en veille, il activera une cible de session utilisateur que vous pouvez commander vos services en dessous de.la source
Pour ajouter à la réponse de @kyrias, voici un moyen de créer votre propre sleep.target au niveau utilisateur:
~ / .local / share / systemd / user / sleep.target
~ / .local / bin / watch_sleep
~ / .local / share / systemd / user / watch_sleep.service
Voir mon article de blog https://medium.com/@aiguofer/systemd-sleep-target-for-user-level-10eb003b3bfd
la source