Saya telah menulis beberapa file layanan pengguna systemd yang saya ingin pengguna aktifkan dan yang membutuhkan koneksi jaringan yang berfungsi. Saya pikir itu akan semudah:
Wants=network-online.target
After=network-online.target
Namun, layanan tampaknya mulai terlalu dini, dan dalam journalctlsaya melihat:
network-online.target: Cannot add dependency job, ignoring: Unit network-online.target failed to load: No such file or directory.
Kemudian saya mencari lebih banyak dan mencoba
Wants=network.target
After=network.target
dan lakukan sudo systemctl enable systemd-networkd-wait-online.service.
Sekarang saya miliki di journalctl:
network.target: Cannot add dependency job, ignoring: Unit network.target failed to load: No such file or directory.
Dan sekali lagi layanan dimulai terlalu dini.
Apakah pesan itu seharusnya ada di sana? Bagaimana saya bisa men-debug masalah saya?
EDIT : alasannya sederhana dan secara khusus dinyatakan dalam Arch Wiki :
systemd --userberjalan sebagai proses terpisah darisystemd --systemproses. Unit pengguna tidak dapat merujuk atau bergantung pada unit sistem.
Posting forum ini sepertinya menyarankan solusi sederhana: Saya harus linkmenggunakan unit sistem yang diperlukan sebagai pengguna, sehingga membuat symlink tersedia di jalur pencarian unit.
Setelah melakukan itu, saya tidak melihat No such file or directorypesan apa pun , namun, saya masih tidak dapat membuat layanan benar-benar berjalan setelah jaringan online. Saya telah mencoba menghubungkan network.target, network-online.targetdan systemd-networkd-wait-online.service, mengatur unit saya untuk bergantung pada masing-masing, tanpa hasil. Ketika saya memeriksa status unit yang ditautkan dalam mode pengguna, mereka semua ada yang mati, misalnya:
$ 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.
Namun, saya dapat melihat network-online.targetaktif dalam mode pengguna setelah menautkannya:
$ 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.