jawaban chaos adalah apa yang dikatakan beberapa dokumentasi. Tetapi sebenarnya bukan itu yang dilakukan systemd. (Hal ini tidak apa van Smoorenburg rc
lakukan, baik. Van Smoorenburgrc
paling pasti tidak mengabaikan LSB header, yang insserv
digunakan untuk menghitung orderings statis, untuk pemula.) The Freedesktop dokumentasi, seperti bahwa "Tidak kompatibel" halaman, sebenarnya salah, pada ini dan poin lainnya. (The HOME
variabel lingkungan sebenarnya adalah sering diatur, misalnya. Hal ini berlangsung sepenuhnya didokumentasikan di mana saja untuk waktu yang lama. Ini sekarang didokumentasikan dalam manual, setidaknya, tapi itu halaman Freedesktop WWW masih belum diperbaiki.)
Format layanan asli untuk systemd adalah unit layanan . manajemen layanan systemd yang tepat hanya beroperasi dalam hal yang, yang dibaca dari salah satu dari direktori di mana (sistem-lebar) .service
file dapat hidup. /etc/systemd/system
, /run/systemd/system
, /usr/local/lib/systemd/system
, Dan /usr/lib/systemd/system
empat dari direktori tersebut.
Kompatibilitas dengan rc
skrip van Smoorenburg dicapai dengan program konversi, bernama systemd-sysv-generator
. Program ini terdaftar di /usr/lib/systemd/system-generators/
direktori dan dengan demikian dijalankan secara otomatis oleh systemd di awal proses bootstrap di setiap boot, dan sekali lagi setiap kali systemd diperintahkan untuk memuat ulang konfigurasinya nanti.
Program ini adalah generator , sejenis utilitas tambahan yang tugasnya membuat file unit layanan dengan cepat, dalam tmpfs di mana tiga direktori lainnya (yang dimaksudkan hanya untuk digunakan oleh generator) berada. systemd-sysv-generator
menghasilkan unit layanan yang menjalankan rc
skrip van Smoorenburg dari /etc/init.d
, jika tidak menemukan unit layanan systemd asli dengan nama yang sudah ada di enam lokasi lainnya.
manajemen layanan systemd hanya tahu tentang unit layanan. Unit layanan yang dihasilkan secara otomatis ini ditulis untuk memohon rc
skrip van Smoorenburg . Mereka memiliki, antara lain:
[Satuan]
SourcePath = / etc / init.d / wibble
[Layanan]
ExecStart = / etc / init.d / wibble mulai
ExecStop = / etc / init.d / wibble berhenti
Hikmat yang diterima adalah bahwa rc
skrip van Smoorenburg harus memiliki header LSB, dan dijalankan secara paralel tanpa menghormati prioritas yang diberlakukan oleh /etc/rc?.d/
sistem. Ini tidak benar di semua titik.
Bahkan, mereka tidak perlu memiliki LSB header, dan jika mereka tidak systemd-sysv-generator
dapat mengenali header RedHat komentar berusia lebih terbatas ( description:
, pidfile:
, dan sebagainya). Selain itu, dengan tidak adanya header LSB akan jatuh kembali ke isi /etc/rc?.d
tambak link simbolik, membaca prioritas yang disandikan ke dalam nama tautan dan membangun sebelum / setelah memesan dari mereka, membuat serial layanan. Tidak hanya header LSB bukan persyaratan, dan tidak hanya mereka sendiri menyandikan sebelum / setelah memesan yang membuat serial hal-hal sampai batas tertentu, perilaku mundur dalam ketidakhadiran lengkap mereka sebenarnya adalah operasi signifikan yang tidak paralel.
Alasan yang /etc/rc3.d
tampaknya tidak penting adalah bahwa Anda mungkin mengaktifkan skrip tersebut melalui /etc/rc?.d/
direktori lain . systemd-sysv-generator
menterjemahkan yang tercantum dalam salah satu /etc/rc2.d/
, /etc/rc3.d/
dan /etc/rc4.d/
menjadi native Wanted-By
hubungan dengan systemd ini multi-user.target
. Level run "usang" di dunia systemd, dan Anda bisa melupakannya.
Bacaan lebih lanjut
systemd
dan skrip /etc/init.d tidak disetel ke "boot saat mulai" itu masih akan berfungsi seperti yang diharapkan tetapi tidak akan muncul di daftar show-units: unix.stackexchange.com/a/518894/8337Systemd kompatibel dengan skrip init SysV. Menurut LSB 3.1, skrip init harus memiliki Konvensi Komentar informasional , yang menentukan kapan skrip harus memulai / berhenti dan apa yang diperlukan agar skrip mulai / berhenti. Ini adalah sebuah contoh:
Ini adalah bagian yang dikomentari yang diabaikan oleh SysV. Di sisi lain, systemd membaca informasi dependensi itu dan menjalankan skrip-skrip itu tergantung pada itu.
Tetapi ada satu titik, di mana systemd dan SysV berbeda dalam hal skrip init. SysV mengeksekusi skrip dalam urutan berurutan berdasarkan nomor mereka dalam nama file. Systemd tidak. Jika dependensi terpenuhi, systemd langsung menjalankan skrip, tanpa menghormati penomoran nama skrip. Beberapa dari mereka kemungkinan besar akan gagal karena pemesanan. Ada banyak ketidakcocokan lain yang harus dipertimbangkan.
Jika ada skrip init dan file .service untuk layanan yang sama, systemd akan menjalankan keduanya, segera setelah dependensi terpenuhi (dalam hal skrip init, yang ditentukan dalam header LSB).
sumber