Pertanyaan Apa perbedaan antara / etc / init / dan /etc/init.d/?


Apa perbedaan antara /etc/init/ dan /etc/init.d/?

Secara lebih umum, apa artinya melakukan itu .d akhiran menyampaikan ke direktori?


217
2017-10-01 22:59


asal




Jawaban:


/etc/init.d berisi skrip yang digunakan oleh alat init Sistem V (SysVinit). Ini adalah paket manajemen layanan tradisional untuk Linux, yang berisi init program (proses pertama yang dijalankan ketika kernel telah selesai menginisialisasi) serta beberapa infrastruktur untuk memulai dan menghentikan layanan dan mengkonfigurasikannya. Secara khusus, file dalam /etc/init.d adalah skrip shell yang merespons start, stop, restart, dan (bila didukung) reload perintah untuk mengelola layanan tertentu. Skrip ini dapat dipanggil secara langsung atau (paling sering) melalui beberapa pemicu lain (biasanya kehadiran tautan simbolik di /etc/rc?.d/).

/etc/init berisi file-file konfigurasi yang digunakan oleh Upstart. Upstart adalah paket manajemen layanan muda yang diperjuangkan oleh Ubuntu. File dalam /etc/init adalah file konfigurasi yang memberitahu Upstart bagaimana dan kapan start, stop, reload konfigurasi, atau query status sebuah layanan. Seperti jernih, Ubuntu mengalami transisi dari SysVinit ke Upstart, yang menjelaskan mengapa banyak layanan yang datang dengan skrip SysVinit meskipun file konfigurasi Upstart lebih disukai. Bahkan, skrip SysVinit diproses oleh lapisan kompatibilitas di Upstart.

.d dalam nama direktori biasanya menunjukkan direktori berisi banyak file konfigurasi atau skrip untuk situasi tertentu (mis. /etc/apt/sources.list.d berisi file yang digabung untuk membuat virtual sources.list; /etc/network/if-up.d berisi skrip yang dijalankan saat jaringan sayanterface diaktifkan). Struktur ini biasanya digunakan ketika setiap entri dalam direktori disediakan oleh sumber yang berbeda, sehingga setiap paket dapat menyimpan plug-in sendiri tanpa harus mem-parse file konfigurasi tunggal untuk referensi itu sendiri. Dalam kasus ini, kebetulan "init" adalah nama logis untuk direktori, SysVinit muncul pertama dan digunakan init.d, dan pemula menggunakan polos init untuk direktori dengan tujuan serupa (itu akan lebih "mainstream", dan mungkin kurang arogan, jika mereka akan digunakan /etc/upstart.d sebagai gantinya).

¹ tidak menghitung initrd


217
2017-10-01 23:28



catatan sejarah esoterik: .d direktori masuk dengan System V. Itu adalah notasi yang membingungkan kemudian dan pada akhirnya mungkin ide satu orang yang masuk ke basis kode dan tidak bisa pergi. Misalnya, jika Anda berpikir demikian cat adalah nama yang buruk untuk tugas yang dilakukan, bayangkan berapa banyak file di seluruh sistem yang harus Anda sentuh untuk mengubahnya. - msw
Pada sistem, yang memiliki kedua direktori, yang mana dari Upstart dan SysVinit digunakan? Apakah ada cara untuk memeriksanya? - asheeshr
@AsheeshR Periksa apakah ada paket yang disebut upstart atau sysvinit. Dan dalam versi terbaru, bisa jadi systemd juga (yang tidak ada untuk Ubuntu kembali ketika saya menulis jawaban saya). Ini paket mana saja yang disediakan /sbin/init (dpkg -S /sbin/init). - Gilles
Pada contoh Ubuntu AWS yang saya gunakan (dari Bitnami), itu adalah upstart paket yang menyediakan / sbin / init (lari dpkg -S /sbin/init). Tapi Bitnami telah menempatkan skripnya di direktori /etc/init.d. Bukankah ini bertentangan dengan jawaban Anda untuk @AsheeshR di atas? Terima kasih. - Sabuncu
@Sabuncu Ini adalah contoh dari "skrip SysVinit diproses oleh lapisan kompatibilitas di Upstart". - Gilles


".D" biasanya ditambahkan ke nama direktori untuk menunjukkan bahwa apa yang dulu (atau apa yang bisa) ditangani oleh satu skrip atau file konfigurasi tunggal telah dipecah menjadi beberapa file demi kenyamanan, tetapi yang harus dimasukkan, atau dijalankan, bersama.

Sebagai contoh, /etc/apache/conf.d/ atau /etc/apt/sources.d/

Dalam kasus di mana penting urutan mana yang harus dimasukkan / dijalankan, file dalam direktori ini kadang-kadang dimulai dengan angka, seperti "00-default" atau "80-pengguna" sehingga mereka mengeksekusi dalam urutan yang benar.

Dalam kasus /etc/init.d/ itu semacam menunjukkan bahwa skrip di "init.d" semua harus dieksekusi. Saat ini, sistem init sistem operasi modern sedikit lebih terlibat dari itu, tetapi nama direktori masih ada.


26
2018-05-10 02:51



Mungkin itu .d berarti ini terkait dengan proses 'deamon' yang biasanya dimulai saat boot-time.
.d pasti untuk direktori, bukan daemon. - Martin


Seperti yang Anda tunjukkan, nomenklatur ".d" membingungkan dan aneh, dan tidak benar-benar memiliki tempat dalam sistem modern - Anda akan melihat bahwa sebagian besar layanan modern cenderung menjatuhkannya.

Alasannya adalah direktori /etc/init dan tidak /etc/upstart adalah karena Upstart adalah nama proyek, biner yang terinstal sebenarnya masih /sbin/init jadi tidak masuk akal jika konfigurasinya memiliki nama yang tidak cocok dengan biner.


12
2017-10-13 01:59



Ini salah, lihat mis. udev rules.d, Xorg relatif baru xorg.conf.d, tidak terlalu tua /etc/profile.d dll .. - Ruslan