GNU/Linux >> Belajar Linux >  >> Linux

10 Contoh Perintah insserv untuk Script Init Sistem Linux

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)

Linux
  1. Perintah killall Linux untuk Pemula (8 Contoh)

  2. Perintah Shutdown Linux (dengan Contoh)

  3. Contoh Perintah "shutdown" di Linux

  1. 12 Contoh Perintah IP untuk Pengguna Linux

  2. Resize2fs Contoh Perintah di Linux

  3. Contoh Perintah localectl di Linux

  1. Perintah dir Linux untuk pemula (10 contoh)

  2. Perintah Linux rm Dijelaskan untuk Pemula (8 Contoh)

  3. Tutorial Perintah Linux ln untuk Pemula (5 Contoh)