systemd adalah manajer pekerjaan. Halaman manual tidak begitu tepat tentang bagaimana segala sesuatu bekerja.
Ketika Anda boot, apa yang dilakukan systemd adalah membangun transaksi yang terdiri dari pekerjaan untuk pekerjaan anchor (yaitu memulai pekerjaan untuk default.target). Apa yang dilakukan semua dependensi dan hubungan ini adalah menentukan bagaimana dan pekerjaan apa yang akan dipicu. Memesan menentukan pekerjaan apa yang akan ditunggu oleh setiap pekerjaan lain. Oleh karena itu, default.target unit berada di pusat semua ini, itulah sebabnya ketika mengaktifkan unit Anda menggunakan dependensi terbalik yang melalui systemctl aktif membuat tautan simbolis filesystem yang menunjukkan dependensi maju yang dapat diikuti oleh systemd (juga mengapa Anda memerlukan symlink sistem file di tempat pertama). Mirip adalah ketika Anda secara manual memulai beberapa unit, maka unit itu adalah jangkar, dan transaksi dihitung dengan itu.
Tidak terlalu detail, saya akan menjelaskan apa yang Membutuhkan = dan Setelah = lakukan.
Membutuhkan = akan menyebabkan systemd untuk memicu pekerjaan awal untuk unit yang diperlukan ketika Anda mendapatkan pekerjaan awal yang dipicu (secara eksplisit, atau melalui ketergantungan: tidak ada perbedaan secara internal). Ini juga memiliki properti memicu stop job pada Anda ketika unit ini dihentikan (catatan: dihentikan, tidak turun sendiri) atau dimulai kembali. Ini berarti bahwa jika beberapa dependensi / systemctl menyebabkannya berhenti / restart, Anda juga akan berhenti / restart. Namun, jika turun sendiri, Anda tidak akan berhenti, karena tidak ada pekerjaan, dan perubahan negara terjadi tanpa keterlibatan systemd. Di situlah Anda akan menggunakan BindsTo = (mirip dengan unit perangkat, yang dapat menjadi tidak aktif tanpa keterlibatan systemd, untuk alasan yang jelas).
Sekarang, penggunaan Setelah = direkomendasikan karena Membutuhkan = sendiri adalah bersemangat untuk apa yang dilakukannya: membatalkan penerima jika pekerjaan awal gagal. Namun pembatalan ini hanya bekerja pada pekerjaan, yaitu jika unit lain tidak mendefinisikan pemesanan, systemd memicu keduanya secara paralel, dan jika pekerjaan awalnya selesai sebelum pekerjaan awal Anda gagal, itu tidak akan dibatalkan (tidak dapat dibatalkan, sebenarnya) . Penggunaan After = berarti bahwa pekerjaan lain terus menunggu sampai pekerjaan awal dari unit yang diperlukan selesai, dan tergantung pada hasilnya, jika gagal, pekerjaan mulai menunggu unit Anda dibatalkan dengan hasil pekerjaan JOB_DEPENDENCY (mengapa Anda menggunakan warna kuning [DEPEND] saat boot untuk kasus seperti itu). Oleh karena itu, efek pembatalan ini tidak dapat ditentukan tanpa menggunakan After =.
Inilah sebabnya mengapa menggunakan Wants = tanpa After = baik-baik saja jika Anda tidak ingin menunggu startup unit lain: karena tidak ada pembatalan di sana, jadi tidak ada balapan. Dalam hal ini, itu tidak lebih dari mekanisme sinkronisasi.
Selain itu, Anda juga dapat mengaktifkan keduanya saat boot, dan tidak memerlukan satu sama lain, dan hanya menentukan pemesanan, dalam hal ini, ketika keduanya ditarik sebagai bagian dari transaksi yang sama, mereka akan dipesan (atau jika pekerjaan untuk yang lain dipicu sementara pekerjaan untuk unit yang ingin ia jalankan setelah berjalan, ia akan lebih dulu menunggu untuk itu selesai, di seluruh transaksi).
Sekarang jika tidak ada pekerjaan, pemesanan tidak berpengaruh pada unit tersebut. Namun, biasanya ada pekerjaan, sebagai konsekuensi dari penggunaan dependensi seperti Membutuhkan = dan Mau =, atau keduanya ditarik pada suatu waktu dan menentukan beberapa pemesanan, dalam hal ini mereka menunggu pekerjaan unit lain.