GNU/Linux >> Belajar Linux >  >> Linux

Apa hubungan antara direktori /etc/init.d dan /etc/rcX.d di Linux?

Mari lupakan init.d atau rcx.d dan menjaga hal-hal yang sangat sederhana. Bayangkan Anda sedang memprogram sebuah program yang satu-satunya tanggung jawabnya adalah menjalankan atau menghentikan skrip lain satu per satu.

Namun masalah Anda selanjutnya adalah memastikan mereka berjalan secara berurutan. Bagaimana Anda melakukannya?

Dan bayangkan program ini melihat ke dalam scripts folder untuk menjalankan skrip. Untuk memesan prioritas skrip, Anda akan menamainya dalam urutan numerik. Urutan inilah yang menentukan hubungan antara init.d dan rc

Dengan kata lain init.d berisi skrip untuk dijalankan dan rcX.d berisi perintah mereka untuk dijalankan.

X nilai dalam rcX.d adalah tingkat lari. Ini dapat diterjemahkan secara longgar ke status OS saat ini.

Jika Anda menggali di dalam rcX.d skrip Anda akan menemukan format ini:

Xxxabcd
  • X diganti dengan K atau S , yang menunjukkan apakah skrip harus killed atau started di level lari saat ini
  • xx adalah nomor pesanan
  • abcd adalah nama skrip (nama tidak relevan namun di mana itu menunjukkan skrip yang akan dijalankan)

Ada beberapa sistem init yang berbeda untuk Linux. Yang utama adalah SysVinit (yang tradisional), Pemula (pengganti Ubuntu), dan SystemD (didorong oleh Fedora dan Gnome). Direktori /etc/init.d dan /etc/rc?.d digunakan oleh SysVinit. Buku tersebut mungkin menyebutkannya sehubungan dengan Ubuntu karena informasinya agak kuno (Ubuntu dulu menggunakan SysVinit seperti orang lain) atau karena direktori tersebut masih ada untuk kompatibilitas.

/etc/init.d berisi banyak skrip, masing-masing berisi instruksi untuk memulai dan menghentikan layanan. Beberapa dari layanan ini harus dimulai saat boot; yang lain harus dimulai dalam mode multipengguna tetapi tidak dalam mode pemeliharaan satu pengguna; dan dimungkinkan untuk menentukan mode yang berbeda dengan rangkaian layanan yang diinginkan yang berbeda. SysVinit mengelola ini melalui runlevel. Direktori /etc/rc$N.d berisi skrip untuk dijalankan saat memasuki runlevel N (/etc/rc$N.d/S* ) dan skrip untuk dijalankan saat meninggalkan runlevel N (/etc/rc$N.d/K* ). Karena banyak runlevel memiliki skrip yang sama, alih-alih menyimpan salinan skrip untuk setiap runlevel, semua skrip disimpan di satu lokasi /etc/init.d , dan direktori khusus runlevel /etc/rc?.d mengandung tautan simbolik. Selain itu, nama tautan simbolik menunjukkan apakah layanan akan dimulai (S* ) atau berhenti (terbunuh, K* ) di runlevel tersebut, dan awalan angka digunakan untuk mengontrol urutan eksekusi skrip.

Skrip yang bertanggung jawab untuk melintasi /etc/rc$N.d adalah /etc/init.d/rc (di Ubuntu pra-Pemula dan di Debian; lokasi mungkin berbeda di distribusi Linux lainnya).


/etc/init.d adalah direktori tempat skrip init berada.

etc/rcX.d adalah tempat tautan yang mengontrol layanan mana yang dimatikan atau dimulai saat memasuki runlevel X . File dalam rcX.d dimulai dengan K dieksekusi dengan parameter stop , dan file yang dimulai dengan S dieksekusi dengan parameter start . Biasanya mengurutkan startup dan stop order menggunakan dua digit angka setelah K atau S . Untuk memastikan pengurutan mulai dan berhenti yang tepat, biasanya kedua urutan dijumlahkan hingga 100.

Program dapat dinonaktifkan di run level dengan menghapus tautan atau mengubah kasus K atau S ke k atau s .

EDIT:Administrator biasanya menjalankan skrip dari /etc/init.d yang mungkin merupakan tautan simbolis ke direktori lain tergantung pada distribusi. (Distribusi yang berbeda memiliki standar yang berbeda.)

rcX.d digunakan oleh kode inisialisasi untuk mengubah level proses.


Linux
  1. perintah grpck – Hapus entri yang rusak atau duplikat di file /etc/group dan /etc/gshadow.

  2. Perbedaan antara /etc/crontab dan crontab -e

  3. Linux:Perbedaan antara /dev/console , /dev/tty dan /dev/tty0

  1. Apa perbedaan antara /tmp dan /run?

  2. Mengapa direktori /home, /usr, /var, dll. Semuanya memiliki nomor inode yang sama (2)?

  3. Perbedaan antara /etc/hosts dan /etc/resolv.conf

  1. Bagaimana Linux Menangani Beberapa Pemisah Jalur Berturut-turut (/home////username///file)?

  2. Linux – Menggabungkan /usr/bin Dan /usr/sbin Ke /bin (gnu/linux)?

  3. Cara mengatur /etc/issues untuk menampilkan alamat IP untuk eth0