Saya tahu systemctl enable iptables
mirip dengan perintah chkconfig --level 5 iptables on
, tetapi keduanya tidak persis sama.
Menggunakan systemctl
, bagaimana kami membatasi layanan untuk dimulai hanya pada target tertentu seperti graphics.target.
Jawaban yang Diterima:
Itulah yang WantedBy=
dan RequiredBy=
arahan di systemd
file unit adalah untuk:
Dari man systemd.unit
:
WantedBy=, RequiredBy=
Opsi ini dapat digunakan lebih dari sekali, atau daftar nama unit yang dipisahkan spasi dapat diberikan. Tautan simbolis dibuat di direktori .wants/ atau .requires/ dari masing-masing unit yang terdaftar saat unit ini diinstal oleh systemctl enable. Ini memiliki efek bahwa ketergantungan tipe Wants=atau Requires=ditambahkan dari unit yang terdaftar ke unit saat ini. Hasil utama adalah bahwa unit saat ini akan dimulai ketika unit yang terdaftar dimulai. Lihat deskripsi Wants=dan Requires=di bagian [Unit] untuk detailnya.
Jadi simbolik link yang dibuat itulah yang menyebabkan systemd
untuk memulai unit yang diberikan saat target/unit dimulai.
Jadi misalnya:
[Install]
WantedBy=graphical.target
Akan menyebabkan unit hanya dimulai ketika graphical.target
dijalankan (jika unit diaktifkan).
Contoh lain:
[Install]
WantedBy=my-custom-target.target graphical.target
Akan menyebabkan unit dimulai ketika my-custom-target.target
atau graphical.target
dijalankan (jika unit diaktifkan).
Satu hal terakhir yang perlu diingat, mungkin sulit untuk membatasi sesuatu pada satu target karena beberapa target bergantung pada yang lain. Misalnya, graphical.target
Requires=multi-user.target
, jadi ketika graphical.target
dimulai semua unit dari multi-user.target
juga dimulai. Ingatlah bahwa beberapa target dibangun di atas target lainnya, dan target yang dibangun di atas akan mendapatkan segalanya dari target yang mereka andalkan.