perintah insserv digunakan untuk mengontrol urutan start dan stop service yang ada di sistem Linux.
Ini mengaktifkan skrip init sistem yang diinstal (skrip boot) dengan membaca header komentar skrip init dan menghitung ketergantungan antara semua skrip.
Insserv memindai fasilitas sistem dalam file konfigurasi /etc/insserv.conf dan direktori /etc/insserv.conf.d.
1. init.d Format Header Skrip
Semua skrip di bawah direktori /etc/init.d harus memiliki header seperti di bawah ini. Bahkan jika baris dikomentari (seperti di bawah) di bagian header setiap skrip, insserv masih dapat membaca semua baris ini dan mengaktifkan semua skrip init.
Pada contoh berikut, baris yang dimulai dengan “# Required-Start:$local_fs boot.localnet” memungkinkan insserv untuk menjalankan/memverifikasi skrip $local_fs dan skrip boot.localnet berikutnya sebelum skrip boot.kdump dapat dijalankan.
Dengan cara yang sama, baris “# Required-Stop:$local_fs boot.localnet” memungkinkan insserv untuk menghentikan layanan sebelum skrip ini dijalankan.
Jika Anda baru mengenal skrip init, Anda harus memahami bagaimana Anda dapat menulis skrip init khusus berdasarkan Standar Init LSB.
# cat boot.kdump #!/bin/bash # # Copyright 2005 Red Hat, Inc. # Author: Jeff Moyer <[email protected]> ### BEGIN INIT INFO # Provides: boot.kdump # Required-Start: $local_fs boot.localnet # Should-Start: # Should-Stop: # Required-Stop: $local_fs boot.localnet # Default-Start: B # Default-Stop: # Short-Description: kdump boot configuration # Description: This script loads the kdump kernel on startup. ### END INIT INFO . /etc/sysconfig/kdump . /etc/rc.status
2. Format File insserv.conf
Berikut ini adalah contoh dari /etc/insserv.conf, yang merupakan file konfigurasi yang digunakan oleh perintah insserv.
# cat /etc/insserv.conf # All local filesystems are mounted (done during boot phase) $local_fs boot.localfs +boot.crypto # Low level networking (ethernet card) $network network # Named is operational $named +named +dnsmasq +lwresd $network # All remote filesystems are mounted (note in some cases /usr may # be remote. Most applications that care will probably require # both $local_fs and $remote_fs) $remote_fs $local_fs +nfs +smbfs # System logger is operational $syslog syslog # SunRPC portmapper available $portmap portmap # The system time has been set correctly $time boot.clock +xntpd # Services which need to be interactive <interactive> apache apache2 boot.clock boot.crypto boot.crypto-early boot.localfs boot.rootfsck kbd kdump ntp
Dalam file konfigurasi di atas:
- $network adalah nama semu yang merujuk ke skrip /etc/init.d/network.
- Demikian pula Anda akan melihat nama semu untuk setiap skrip di /etc/insserv.conf. Ini adalah nama semu yang akan digunakan di bagian header skrip boot.
- Setiap baris yang dimulai dengan $ dan nama berikut mendefinisikan fasilitas sistem sesuai dengan Spesifikasi Dasar Standar Linux (LSB)
- Semua nama yang diikuti oleh fasilitas sistem tersebut akan menyatakan dependensi yang diperlukan dari fasilitas tersebut.
- Jika layanan dengan nama setelah tanda plus tersedia, layanan tersebut akan digunakan. Jika tidak tersedia, diabaikan secara diam-diam.
- Kata-kata yang diawali dengan
adalah kata kunci. - Saat ini
adalah satu-satunya kata kunci yang diketahui untuk menandai layanan sebagai layanan interaktif, mis. layanan yang memerlukan masukan frasa sandi atau sandi selama boot atau perubahan runlevel.
3. Tambahkan Layanan
Berikut adalah contoh cara menambahkan layanan sederhana menggunakan utilitas insserv.
Pertama, pastikan file yang dapat dieksekusi berada di bawah direktori /etc/init.d.
# ls -l /etc/init.d/joystick -rwxr-xr-x 1 root root 2296 May 5 2010 /etc/init.d/joystick
Selanjutnya, jalankan perintah insserv untuk mengaktifkan layanan joystick.
# insserv joystick
Setelah perintah insserv di atas, jalankan chkconfig untuk memverifikasi bahwa itu ditambahkan ke daftar startup.
# chkconfig --list | grep joystick joystick 0:off 1:off 2:on 3:on 4:off 5:on 6:off
Harap dicatat bahwa di atas adalah contoh yang sangat sederhana tanpa ketergantungan. Namun, kekuatan insserv adalah di mana ia akan secara otomatis menyelesaikan dan menambahkan semua skrip dependen yang sesuai.
4. Lakukan Uji Coba
Untuk menjalankan dry run tanpa mengaktifkan layanan apa pun, gunakan tanda -n seperti yang ditunjukkan di bawah ini.
# insserv –n insserv: Loading ypserv insserv: Loading /etc/insserv/overrides/ypserv insserv: Loading network insserv: Loading /etc/insserv/overrides/network insserv: Loading aaeventd insserv: Loading /etc/insserv/overrides/aaeventd insserv: Loading ntp insserv: Loading hawk insserv: Loading /etc/insserv/overrides/hawk insserv: Loading fetchmail insserv: Loading /etc/insserv/overrides/fetchmail insserv: Loading boot.cycle insserv: Loading /etc/insserv/overrides/boot.cycle insserv: Loading autoyast .. ..
5. Menghapus Layanan
Gunakan opsi -r seperti yang ditunjukkan di bawah ini untuk menghapus layanan.
# insserv -r joystick
Setelah Anda menghapus layanan, Anda tidak akan melihatnya di output chkconfig.
# chkconfig --list | grep joystick
6. Gunakan Tingkat Lari Default
Untuk menggunakan run-level default yang ditentukan dalam skrip, gunakan opsi -d. Jika Anda telah mengedit skema tautan runlevel, ini dapat memulihkan perubahan tersebut.
# insserv –d
Untuk menggunakan run-level default yang ditentukan dalam skrip, gunakan opsi –d. Dalam contoh berikut, insserv akan menggunakan run-level yang ditentukan dalam skrip alih-alih mengeksekusi skrip dari run-level yang ditentukan oleh sistem atau pengguna.
# insserv –d <script name> # insserv -d /etc/init.d/lighttpd # chkconfig --list | grep lighttpd lighttpd 0:off 1:off 2:off 3:on 4:off 5:on 6:off
7. Paksa Jalankan Layanan
Untuk memaksa menjalankan mengabaikan layanan yang diperlukan, gunakan opsi -f seperti yang ditunjukkan di bawah ini.
# insserv –f
Untuk memaksa sistem mengabaikan layanan lain yang diperlukan atau skrip dependen, gunakan opsi –f. Dalam contoh berikut, agar skrip /etc/init.d/openhpid dapat dieksekusi, dependensi lain seperti network, remote, layanan syslog harus dimulai terlebih dahulu.
# more /etc/init.d/openhpid #! /bin/sh # ### BEGIN INIT INFO # Provides: openhpid # Required-Start: $network $remote_fs $syslog # Required-Stop: $network $remote_fs $syslog # Should-Start: $named # Should-Stop: $named # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start OpenHPI daemon at boot time # Description: Enable OpenHPI service which is provided by openhpid. ### END INIT INFO
Anda dapat memaksa sistem untuk mengeksekusi skrip /etc/init.d/openhpid mengabaikan status jaringan, remote, layanan syslog dengan menggunakan perintah insserv seperti yang ditunjukkan di bawah ini:
# insserv -f /etc/init.d/openhpid
Selain itu, Anda dapat menggunakan opsi -v bersama dengan salah satu output di atas untuk melihat detail lebih lanjut tentang apa yang dilakukan perintah.
# insserv –dv
8. Ubah Direktori Skrip
Seperti yang Anda lihat dari semua contoh sebelumnya, skrip ditempatkan di bawah direktori /etc/init.d secara default. Jika Anda ingin insserv menggunakan direktori yang berbeda untuk skrip, gunakan opsi -p.
Misalnya, berikut ini akan menggunakan direktori /etc/init.d.custom sebagai lokasi skrip.
# insserv –p /etc/init.d.cusom
9. Insserv File Konfigurasi Kustom
Untuk menentukan jalur file konfigurasi, gunakan opsi -c. Ini digunakan untuk file insserv.conf dan direktori insserv.conf.d.
# insserv –c <config file>
Katakanlah misalnya, Anda ingin menggunakan jalur yang berbeda untuk file konfigurasi daripada /etc/insserv.conf maka Anda dapat menggunakan perintah seperti yang ditunjukkan pada contoh berikut.
Ini sangat membantu ketika Anda ingin membuat perubahan pada file /etc/insserv.conf dan menjalankan prosedur dry-run (-n) untuk tujuan validasi. Cadangkan file asli, modifikasi dengan perubahan yang Anda butuhkan dan kemudian arahkan ke lokasi baru.
Setelah selesai dengan semua pengujian, Anda dapat menjalankan perintah yang sama untuk kembali ke file konfigurasi asli atau menggunakan lokasi baru.
# insserv -c /var/tmp/insserv_karthik.conf
10. Insserv Override dan File Terkait
Untuk mengganti jalur untuk mengganti /etc/insserv/overrides, silakan gunakan opsi berikut.
Secara default, header komentar LSB yang ditemukan di bawah direktori default /etc/insserv/overrides akan menimpa header komentar LSB untuk skrip yang ditemukan di bawah direktori /etc/init.d.
Tetapi, jika Anda ingin menentukan direktori override Anda sendiri, gunakan opsi -o. Berikut ini mendefinisikan /etc/insserv/my.overrides sebagai direktori override.
# insserv –o /etc/insserv/my.overrides
Untuk menimpa atau mengganti header komentar LSB dengan komentar baru, Anda dapat membuat file dengan header baru di jalur tertentu dan menginstruksikan insserv untuk mencari file baru daripada mencari komentar yang ditentukan dalam skrip asli.
Pada contoh berikut, /etc/init.d/splash adalah skrip yang memiliki komentar LSB di bawah ini, komentar ini Anda gunakan untuk menentukan layanan mana yang perlu dimulai atau dihentikan terlebih dahulu.
# more /etc/init.d/splash #! /bin/bash # Copyright (c) 1995-2000 SuSE GmbH Nuernberg, Germany. # # Author: Michael Schroeder <[email protected]> # # /etc/init.d/splash # /usr/sbin/rcsplash # # System startup script for console splash screens # ### BEGIN INIT INFO # Provides: splash # Required-Start: $remote_fs # Should-Start: fbset # Required-Stop: $remote_fs # Should-Stop: fbset # Default-Start: 1 2 3 5 S # Default-Stop: # Description: Splash screen setup ### END INIT INFO
Jika Anda tidak ingin menggunakan komentar LSB di atas dan juga tidak ingin mengubah skrip yang ada, Anda dapat menyalin file ke direktori /etc/insserv/overrides dan menjalankan perintah insserv di bawah ini untuk memberi tahu sistem agar menggunakan skrip yang ditentukan di direktori override,
insserv -o splash
Anda tidak perlu menentukan lokasi direktori override karena jalur defaultnya adalah /etc/insserv/overrides. Anda juga dapat menjalankan insserv dry-run (-n) untuk memverifikasi bagaimana skrip dijalankan.
Berikut ini adalah macam-macam file yang akan diproses oleh perintah insserv:
- /etc/insserv.conf – File konfigurasi untuk insserv yang mendefinisikan Fasilitas Sistem LSB.
- /etc/insserv.conf.d/ – Direktori untuk file konfigurasi lebih lanjut untuk mendeklarasikan Fasilitas Sistem LSB.
- /etc/insserv/overrides/ – Jalur untuk mengganti header komentar LSB yang ada dengan header komentar yang ditemukan di jalur ini.
- /etc/init.d/ – Jalur ke direktori basis skrip init SuSE seperti yang dipersyaratkan oleh Spesifikasi Dasar Standar Linux (LSB)