He escrito un par de archivos de servicio de usuario systemd que quiero que los usuarios habiliten y que necesiten una conexión de red que funcione. Pensé que sería tan fácil como:
Wants=network-online.target
After=network-online.target
Sin embargo, los servicios parecen comenzar demasiado temprano, y journalctl
veo:
network-online.target: Cannot add dependency job, ignoring: Unit network-online.target failed to load: No such file or directory.
Luego busqué más y probé
Wants=network.target
After=network.target
y lo hizo sudo systemctl enable systemd-networkd-wait-online.service
.
Ahora tengo en journalctl
:
network.target: Cannot add dependency job, ignoring: Unit network.target failed to load: No such file or directory.
Y nuevamente el servicio comienza demasiado temprano.
¿Se supone que ese mensaje debe estar allí? ¿Cómo puedo depurar mi problema?
EDITAR : la razón es simple y está específicamente establecida en Arch Wiki :
systemd --user
se ejecuta como un proceso separado delsystemd --system
proceso. Las unidades de usuario no pueden hacer referencia o depender de las unidades del sistema.
Esta publicación en el foro parece sugerir una solución simple: debería link
usar la unidad del sistema necesaria como usuario, creando así un enlace simbólico disponible en la ruta de búsqueda de la unidad.
Después de hacer eso, no veo ningún No such file or directory
mensaje, sin embargo, todavía no puedo hacer que los servicios realmente se ejecuten después de que la red esté en línea. He tratado de unión network.target
, network-online.target
y systemd-networkd-wait-online.service
, fijando mis unidades a depender de cada uno de ellos, sin éxito. Cuando verifico el estado de la unidad vinculada en modo de usuario, todos están muertos, por ejemplo:
$ systemctl --user status network.target
● network.target - Network
Loaded: loaded (/usr/lib/systemd/system/network.target; linked; vendor preset: enabled)
Active: inactive (dead)
Docs: man:systemd.special(7)
http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget
$ systemctl status network.target
● network.target - Network
Loaded: loaded (/usr/lib/systemd/system/network.target; static; vendor preset: disabled)
Active: active since Sat 2015-07-18 19:20:11 MSK; 3h 35min ago
Docs: man:systemd.special(7)
http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget
Jul 18 19:20:11 calc-server systemd[1]: Reached target Network.
Jul 18 19:20:11 calc-server systemd[1]: Starting Network.
Sin embargo, puedo ver network-online.target
activo en modo de usuario después de vincularlo:
$ systemctl --user status network-online.target
● network-online.target - Network is Online
Loaded: loaded (/usr/lib/systemd/system/network-online.target; linked; vendor preset: enabled)
Active: active since Sun 2015-07-19 00:35:38 MSK; 2min 48s ago
Docs: man:systemd.special(7)
http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget
Jul 19 00:35:38 calc-server systemd[469]: Reached target Network is Online.
Jul 19 00:35:38 calc-server systemd[469]: Starting Network is Online.