Ho scritto un paio di file di servizio utente di systemd che desidero abilitare agli utenti e che necessitano di una connessione di rete funzionante. Ho pensato che sarebbe stato facile come:
Wants=network-online.target
After=network-online.target
Tuttavia, i servizi sembrano iniziare troppo presto, e journalctl
vedo:
network-online.target: Cannot add dependency job, ignoring: Unit network-online.target failed to load: No such file or directory.
Poi ho cercato di più e provato
Wants=network.target
After=network.target
e lo ha fatto sudo systemctl enable systemd-networkd-wait-online.service
.
Ora ho in journalctl
:
network.target: Cannot add dependency job, ignoring: Unit network.target failed to load: No such file or directory.
E ancora il servizio inizia troppo presto.
Quel messaggio dovrebbe essere lì? Come posso eseguire il debug del mio problema?
EDIT : il motivo è semplice e specificamente indicato nel Arch Wiki :
systemd --user
viene eseguito come processo separato dalsystemd --system
processo. Le unità utente non possono fare riferimento o dipendere dalle unità di sistema.
Questo post sul forum sembra suggerire una soluzione semplice: dovrei link
l'unità di sistema necessaria come utente, creando così un link simbolico disponibile sul percorso di ricerca dell'unità.
Dopo averlo fatto, non vedo alcun No such file or directory
messaggio, tuttavia, non riesco ancora a far funzionare effettivamente i servizi dopo che la rete è online. Ho provato di collegamento network.target
, network-online.target
e systemd-networkd-wait-online.service
, impostando le mie unità a dipendere da ciascuno di loro, senza successo. Quando controllo lo stato dell'unità collegata in modalità utente, sono tutti alcuni morti, ad esempio:
$ 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.
Tuttavia, posso vedere network-online.target
attivo in modalità utente dopo averlo collegato:
$ 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.