Saya belajar baris perintah dari sebuah buku berjudul " Linux Command Line dan Shell Scripting Bible, Second Edition ." Buku ini menyatakan ini:
Beberapa implementasi Linux berisi tabel proses untuk memulai secara otomatis saat bootup. Pada sistem Linux, tabel ini biasanya terletak di file khusus / etc / inittab.
Sistem lain (seperti distribusi Ubuntu Linux yang populer) menggunakan folder /etc/init.d, yang berisi skrip untuk memulai dan menghentikan aplikasi individual pada saat boot. Skrip dimulai melalui entri di bawah folder /etc/rcX.d, di mana X adalah level run.
Mungkin karena saya baru mengenal linux, saya tidak mengerti apa arti paragraf kedua yang dikutip. Bisakah seseorang menjelaskan hal yang sama dalam bahasa yang lebih sederhana?
linux
init-script
sysvinit
ini aku
sumber
sumber
Jawaban:
Mari kita lupakan
init.d
ataurcx.d
dan jaga agar semuanya tetap sederhana. Bayangkan Anda sedang memprogram program yang satu-satunya tanggung jawab menjalankan atau membunuh skrip lain satu per satu.Namun masalah Anda berikutnya adalah memastikan semuanya berjalan berurutan. Bagaimana Anda melakukan itu?
Dan bayangkan program ini mencari di dalam
scripts
folder untuk menjalankan skrip. Untuk memesan prioritas skrip Anda akan menamainya dengan katakanlah urutan numerik. Urutan ini adalah yang menentukan hubungan antarainit.d
danrc
Dengan kata lain
init.d
berisi skrip untuk menjalankan danrcX.d
berisi perintah untuk dijalankan.The
X
nilaircX.d
adalah tingkat run. Ini bisa diterjemahkan secara longgar ke status OS saat ini.Jika Anda menggali di dalam
rcX.d
skrip Anda akan menemukan format ini:X
diganti denganK
atauS
, yang merupakan kependekan dari apakah skrip seharusnyakilled
ataustarted
dalam level run saat inixx
adalah nomor urutabcd
adalah nama skrip (nama itu tidak relevan namun yang menunjukkan skrip ini akan dijalankan)sumber
Ada beberapa sistem init 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 ini mungkin menyebutkan mereka sehubungan dengan Ubuntu karena informasinya agak ketinggalan jaman (Ubuntu digunakan untuk 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 layanan ini harus dimulai pada saat boot; yang lain harus dimulai dalam mode multiuser tetapi tidak dalam mode pemeliharaan satu pengguna; dan dimungkinkan untuk menentukan mode yang berbeda dengan berbagai set layanan yang diinginkan. SysVinit mengelola ini melalui runlevel . Direktori/etc/rc$N.d
berisi skrip yang harus dijalankan ketika memasukkan 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, daripada menyimpan salinan skrip untuk setiap runlevel, skrip semua disimpan dalam satu lokasi/etc/init.d
, dan direktori runlevel-spesifik/etc/rc?.d
mengandung tautan simbolik. Lebih jauh lagi, nama-nama tautan simbolik mengindikasikan apakah layanan harus dimulai (S*
) atau dihentikan (dibunuh,K*
) di runlevel itu, dan awalan numerik digunakan untuk mengontrol urutan di mana skrip dieksekusi.Script yang bertanggung jawab untuk melintasi
/etc/rc$N.d
adalah/etc/init.d/rc
(pada pra-Pemula Ubuntu dan pada Debian; lokasi dapat berbeda pada distribusi Linux lainnya).sumber
/etc/init.d
dan/etc/rc?.d
lagi, dan memiliki Upstart?/etc/init.d
(bukan.conf
file Upstart masuk/etc/init
), sehingga Upstart masih mendukung/etc/init.d
dan/etc/rc?.d
untuk kompatibilitas./etc/init.d
adalah direktori tempat skrip init berada.Di
etc/rcX.d
sinilah tautan yang mengontrol layanan mana yang dimatikan atau dimulai ketika memasuki runlevelX
. File dircX.d
mulai dengan K dieksekusi dengan parameterstop
, dan file yang dimulai denganS
dieksekusi dengan parameterstart
. Biasanya untuk mengurutkan startup dan menghentikan pesanan menggunakan nomor dua digit setelahK
atauS
. Untuk memastikan mulai dan berhenti memesan yang tepat adalah umum untuk dua urutan untuk menambahkan hingga 100.Program dapat dinonaktifkan pada level run dengan menghapus tautan atau mengubah kasing
K
atauS
kek
ataus
.EDIT: Administrator biasanya menjalankan skrip dari
/etc/init.d
mana mungkin merupakan tautan simbolis ke direktori lain tergantung pada distribusi. (Distribusi yang berbeda memiliki standar yang berbeda.)Ini
rcX.d
digunakan oleh kode inisialisasi untuk mengubah level run.sumber
/etc/init.d
adalah symlink ke direktori di bawah/etc/rc.d/init.d
/etc/init.d
tidak ada gunanya tanpa/etc/rcX.d
? Dan karena/etc/rcX.d
pengontrol program yang diluncurkan saat startup, fungsinya mirip dengan/etc/init.d
, benar?Meskipun @BillThor telah menjawabnya dengan sangat baik, inilah pemahaman saya tentang
/etc/rcX.d
dan/etc/init.d
:/etc/init.d
berisi skrip untuk memulai dan menghentikan aplikasi individual pada saat boot./etc/rc?.d
direktori mewakili berbagai level run dan skrip yang terkandung di dalamnya hanyalah tautan simbolik ke skrip aktual dalam/etc/init.d
direktori. Mengubah level run mengubah mode sistem, seperti mode Pengguna tunggal yang sangat mendasar ke mode hanya konsol ke antarmuka grafis lanjutan.Jadi, tidak ada penggunaan
/etc/rc?.d
direktori tanpa direktori/etc/init.d
itu sendiri (dan tentu saja, sebaliknya).sumber