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 journalctl
widzę:
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 --user
działa jako proces odrębny odsystemd --system
procesu. 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 link
jako 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 directory
wiadomoś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.target
a systemd-networkd-wait-online.service
ustawienie 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.target
aktywny 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.