Я написав пару системних файлів обслуговування користувачів, які я хочу, щоб користувачі ввімкнули і які потребують робочого мережевого з'єднання. Я думав, що це буде так просто, як:
Wants=network-online.target
After=network-online.target
Однак послуги, здається, починаються занадто рано, і journalctl
я бачу:
network-online.target: Cannot add dependency job, ignoring: Unit network-online.target failed to load: No such file or directory.
Потім я шукав ще й намагався
Wants=network.target
After=network.target
і зробив sudo systemctl enable systemd-networkd-wait-online.service
.
Зараз я маю journalctl
:
network.target: Cannot add dependency job, ignoring: Unit network.target failed to load: No such file or directory.
І знову послуга починається занадто рано.
Це повідомлення повинно бути там? Як я можу налагодити свою проблему?
EDIT : причина проста і конкретно вказана в Arch Wiki :
systemd --user
запускається як окремий процес відsystemd --system
процесу. Користувацькі блоки не можуть посилатися або залежати від системних блоків.
Цей пост на форумі, здається, пропонує просте рішення: я повинен link
використовувати необхідний системний блок як користувач, таким чином створюючи посилання на нього, доступне на шляху пошуку одиниць.
Після цього я не бачу жодних No such file or directory
повідомлень, однак я все ще не можу змусити служби фактично запускатися після того, як мережа в Інтернеті. Я спробував зв'язування network.target
, network-online.target
і systemd-networkd-wait-online.service
, встановивши свої одиниці, залежить від кожного з них, але безуспішно. Коли я перевіряю стан підключеного пристрою в режимі користувача, то всі вони є деякими мертвими, наприклад:
$ 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.
Однак я можу бачити network-online.target
активним в режимі користувача після його посилання:
$ 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.