RUN LEVEL
RunLevel pada UNIX/Linux
Run level dapat di anggap status jalannya (larinya) daripada sebuah mesin.
Pada unix di definisikan 6 run level yang terbagi atas:
* runlevel 0: halt
* runlevel 1: single user mode
* runlevel 2-5: normal, bisa dikustomise sesuai kebutuhan. di debian yg dipakai (default) 2
* runlevel 6: reboot
Maka daripada itu bila mesin berada pada runlevel 0 berarti mesinnya sedang mati alias turned off, sedangkan kalau berada pada runlevel 6 berarti mesin sedang reboot, runlevel 1 single user mode, 2-5 normal.
OO, silakan dicoba dengan account root (tentu saja di mesin sendiri :):
# init 0, bisa digunakan untuk shutdown,
# init 6, maka mesin akan di reboot.
init x, masuk ke run level x
Tiap runlevel mempunyai direktori sendiri-sendiri tempat menyimpan script apa yg mesti dijalankan. Direktori tersebut biasanya di /etc/ (kalau redhat mungkin di /etc/rc.d/). Umpamanya untuk runlevel 0 ada di /etc/rc0.d/, 1 di /etc/rc1.d/ dan seterusnya.
Pada direktori tersebut nama arsip biasanya berbentuk seperti ini:
SXXnamascript atau KXXnamascript
yang merupakan symlink ke /etc/init.d/namascript.
S di situ artinya start, yg berarti init akan menjalankan /etc/init.d/namascript dengan argumen start
K artinya kill, yang berarti init akan menjalankan /etc/init.d/namascript dengan argumen stop
Umpamanya kalau ada arsip bernama S90apache berarti init akan menjalan /etc/init.d/apache start
Saat masuk suatu run level init akan menjalankan terlebih dahulu arsip-arsip yang namanya diawali huruf K kemudian baru yang diawali huruf S. Tapi kan yang namanya diawali K atau S banyak oom? Nah XX itu menyatakan urutan jalannya juga, lebih kecil lebih dulu. Jadi bila ada file S20ssh dan S90apache, maka ssh akan jalan terlebih dahulu.
Trus gimana kalau mau bikin startup script untuk program yang aku buat sendiri? Bikin suatu shell script yg menerima argumen start dan stop. kalau start jalankan programnya, kalau stop shutdown programnya. setelah itu simpan di /etc/init.d. (Di debian terdapat arsip /etc/init.d/skeleton yang bisa dijadikan starting poin). Setelah itu buat symlink2 berikut (misalnya nama scriptnya programku):
* ln -s /etc/init.d/programku /etc/rc2.d/S90programku
* ln -s /etc/init.d/programku /etc/rc0.d/K10programku
* ln -s /etc/init.d/programku /etc/rc1.d/K10programku
* ln -s /etc/init.d/programku /etc/rc6.d/K10programku
ganti rc2.d dengan runlevel yg sesuai (biasanya defaultnya mesin: grep initdefault /etc/inittab Kenapa S-nya 90 K-nya 10? nggak papa sebenarnya, tapi kalau menurut hemat aku sih, kalau jalan-nya belakangan, ya mati-nya mesti dulu (LIFO). Lalu di rc0-6 dibuat K karena kita ingin bila mesin di shutdown/restart/masuk single user mode, maka program distop dulu.
Tidak ada komentar:
Posting Komentar