Napisałem kilka systemowych plików usługi użytkownika, które chcę włączyć dla użytkowników i które potrzebują działającego połączenia sieciowego. Pomyślałem, że to będzie tak proste jak:
Wants=network-online.target
After=network-online.target
Usługi wydają się jednak uruchamiać zbyt wcześnie i journalctlwidzę:
network-online.target: Cannot add dependency job, ignoring: Unit network-online.target failed to load: No such file or directory.
Potem szukałem więcej i próbowałem
Wants=network.target
After=network.target
i zrobił sudo systemctl enable systemd-networkd-wait-online.service.
Teraz mam w journalctl:
network.target: Cannot add dependency job, ignoring: Unit network.target failed to load: No such file or directory.
I znowu usługa zaczyna się zbyt wcześnie.
Czy ta wiadomość powinna tam być? Jak mogę debugować mój problem?
EDYCJA : przyczyna jest prosta i konkretnie podana na Arch Wiki :
systemd --userdziała jako proces odrębny odsystemd --systemprocesu. Jednostki użytkownika nie mogą odwoływać się ani zależeć od jednostek systemowych.
Ten post na forum wydaje się sugerować proste rozwiązanie: powinienem linkjako niezbędną jednostkę systemową jako użytkownik, tworząc w ten sposób dowiązanie symboliczne do niej dostępne na ścieżce wyszukiwania jednostek.
Po wykonaniu tej czynności nie widzę żadnych No such file or directorywiadomości, jednak nadal nie mogę sprawić, by usługi faktycznie działały po tym, jak sieć jest w trybie online. Próbowałem łączenie network.target, network-online.targeta systemd-networkd-wait-online.serviceustawienie moich jednostek zależy od każdego z nich, ale bez powodzenia. Kiedy sprawdzam status połączonej jednostki w trybie użytkownika, wszystkie z nich są martwe, np .:
$ 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.
Widzę jednak network-online.targetaktywny w trybie użytkownika po połączeniu:
$ 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.