Estaba leyendo un documento y todavía no me queda claro si es posible lograr lo siguiente:
servicio definido en ~/.config/systemd/user/task.service
eso depende del sistema sleep.target
( ~/.config/systemd/user/sleep.target.wants/task.service
).
Ahora espero task.service
comenzar cuando corro $ systemctl suspend
, sin embargo, no task.service
se inicia.
Estoy ejecutando debian, con la versión 208 de systemd, systemd --user
configurada más o menos como se describe en ArchWiki .
Me pregunto si mi escenario podría ser implementado con systemd en absoluto, o son --system
y --user
completamente aislado por el diseño de manera que --user
la unidad puede no ser una dependencia de una --system
unidad.
En caso de que sea posible, ¿cuál podría ser el problema en mi caso?
Respuestas:
De systemd / User - Archwiki
fuente
systemd
los servicios de sesión de usuario se ejecutan en una instancia completamente separada desystemd
, y no tienen ninguna forma de depender directamente de los servicios del sistema.Sin embargo, hay otras formas de lograr lo que quieres. Lo más limpio probablemente sería hacer que lo que quiera ejecutar cuando el sistema vaya a dormir se enganche en
logind
los inhibidores y luego ejecutarlo como un demonio de fondo.Una solución más general sería tener un demonio conectado a los
logind
inhibidores (ver systemd-lock-handler y xss-lock ) y luego, cuando el sistema se vaya a dormir, activará un objetivo de sesión de usuario que puede solicitar sus servicios. debajo.fuente
Agregando a la respuesta de @kyrias, aquí hay una manera de crear su propio nivel de usuario sleep.target:
~ / .local / share / systemd / user / sleep.target
~ / .local / bin / watch_sleep
~ / .local / share / systemd / user / watch_sleep.service
Vea la publicación de mi blog https://medium.com/@aiguofer/systemd-sleep-target-for-user-level-10eb003b3bfd
fuente