GNU/Linux >> Znalost Linux >  >> Linux

10 příkladů příkazů insserv pro inicializační skripty systému Linux

Příkaz insserv se používá k řízení pořadí spuštění a zastavení služeb, které jsou v systému Linux.

Umožňuje nainstalovaný systémový init skript (boot script) čtením záhlaví komentáře init skriptu a výpočtem závislostí mezi všemi skripty.

Insserv hledá systémová zařízení v konfiguračním souboru /etc/insserv.conf a adresáři /etc/insserv.conf.d.

1. init.d Formát záhlaví skriptu

Všechny skripty v adresáři /etc/init.d by měly mít záhlaví jako níže. I když jsou řádky zakomentovány (jako níže) v záhlaví každého skriptu, insserv by měl být stále schopen číst všechny tyto řádky a podle toho povolit všechny init skripty.

V následujícím příkladu řádek začínající „# Required-Start:$local_fs boot.localnet“ umožňuje insservu spustit/ověřit skripty $local_fs a boot.localnet, než bude možné spustit skript boot.kdump.

Stejným způsobem řádky „# Required-Stop:$local_fs boot.localnet“ umožňují insservu zastavit služby před provedením tohoto skriptu.

Pokud s init skripty začínáte, měli byste pochopit, jak můžete psát vlastní init skripty založené na LSB Init Standard.

# 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. Formát souboru insserv.conf

Následuje příklad /etc/insserv.conf, což je konfigurační soubor používaný příkazem 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

Ve výše uvedeném konfiguračním souboru:

3. Přidat službu

Zde je příklad, jak přidat jednoduchou službu pomocí nástroje insserv.

Nejprve ověřte, zda je spustitelný soubor v adresáři /etc/init.d.

# ls -l /etc/init.d/joystick
-rwxr-xr-x 1 root root 2296 May 5 2010 /etc/init.d/joystick

Dále spusťte příkaz insserv a povolte službu joysticku.

# insserv joystick

Po výše uvedeném příkazu insserv spusťte chkconfig, abyste ověřili, že je přidán do spouštěcího seznamu.

# chkconfig --list | grep joystick
joystick         0:off 1:off 2:on  3:on  4:off 5:on  6:off

Upozorňujeme, že výše uvedený příklad je velmi jednoduchý příklad bez závislostí. Ale síla insserv je tam, kde automaticky vyhodnotí a přidá všechny příslušné závislé skripty.

4. Proveďte zkušební provoz

Chcete-li provést suchý běh bez povolení jakékoli ze služeb, použijte parametr -n, jak je znázorněno níže.

# 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. Odebrat službu

K odstranění služby použijte volbu -r, jak je uvedeno níže.

# insserv -r joystick

Po odebrání služby ji ve výstupu chkconfig neuvidíte.

# chkconfig --list | grep joystick

6. Použít výchozí úroveň běhu

Chcete-li použít výchozí úrovně běhu definované ve skriptech, použijte volbu -d. Pokud jste upravili schéma propojení úrovně běhu, může to tyto změny obnovit.

# insserv –d

Chcete-li použít výchozí úrovně běhu definované ve skriptech, použijte volbu –d. V následujícím příkladu použije insserv úroveň běhu definovanou ve skriptu namísto spuštění skriptu z úrovně běhu definované systémem nebo uživatelem.

# 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. Vynutit spuštění služby

Chcete-li vynutit spuštění ignorování požadované služby, použijte volbu -f, jak je uvedeno níže.

# insserv –f

Chcete-li vynutit, aby systém ignoroval ostatní požadované služby nebo závislé skripty, použijte volbu –f. V následujícím příkladu, aby byl skript /etc/init.d/openhpid spuštěn, je třeba nejprve spustit další závislosti, jako je síť, vzdálené služby ,syslog.

# 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

Pomocí příkazu insserv můžete vynutit spuštění skriptu /etc/init.d/openhpid ignorováním stavu síťových, vzdálených a syslog služeb:

# insserv -f /etc/init.d/openhpid

Také můžete použít volbu -v spolu s kterýmkoli z výše uvedených výstupů, abyste viděli další podrobnosti o tom, co příkaz dělá.

# insserv –dv

8. Změňte adresář skriptů

Jak vidíte ze všech předchozích příkladů, skript je standardně umístěn v adresáři /etc/init.d. Pokud chcete, aby insserv používal pro skript jiný adresář, použijte volbu -p.

Následující příklad použije jako umístění skriptu adresář /etc/init.d.custom.

# insserv –p /etc/init.d.cusom

9. Vlastní konfigurační soubor Insserv

Chcete-li zadat cestu ke konfiguračnímu souboru, použijte volbu -c. Toto se používá jak pro soubor insserv.conf, tak pro adresář insserv.conf.d.

# insserv –c <config file>

Řekněme například, že byste chtěli použít jinou cestu pro konfigurační soubor místo /etc/insserv.conf, pak můžete použít příkaz, jak je znázorněno v následujícím příkladu.

To je velmi užitečné, když chcete provést změny v souboru /etc/insserv.conf a spustit procedury suchého běhu (-n) pro účely ověření. Zálohujte původní soubor, upravte jej pomocí změn, které potřebujete, a poté přejděte na nové umístění.

Jakmile dokončíte veškeré testování, můžete spustit stejný příkaz a vrátit se k původnímu konfiguračnímu souboru nebo použít nové umístění.

# insserv -c /var/tmp/insserv_karthik.conf

10. Přepis Insserv a související soubory

Chcete-li přepsat cestu k nahrazení /etc/insserv/overrides, použijte prosím následující možnost.
Ve výchozím nastavení hlavičky komentářů LSB nacházející se ve výchozím adresáři /etc/insserv/overrides přepíší hlavičky komentářů LSB pro skripty nalezené pod adresář /etc/init.d.

Pokud však chcete zadat svůj vlastní přepisovací adresář, použijte volbu -o. Následující definuje /etc/insserv/my.overrides jako přepisovací adresář.

# insserv –o /etc/insserv/my.overrides

Chcete-li přepsat nebo nahradit záhlaví komentářů LSB novými komentáři, můžete vytvořit soubor s novými záhlavími ve specifické cestě a instruovat insserv, aby hledal nový soubor namísto hledání komentářů definovaných v původním skriptu.

V následujícím příkladu je /etc/init.d/splash skript, který má níže uvedené komentáře LSB. Tyto komentáře se používají k určení, které služby je třeba spustit nebo zastavit jako první.

# 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

Pokud nechcete používat výše uvedené komentáře LSB a také si nepřejete upravovat stávající skript, můžete soubor zkopírovat do adresáře /etc/insserv/overrides a spustit níže uvedený příkaz insserv, abyste systému řekli, aby použil definovaný skript v přepisovacím adresáři,

insserv -o splash

Nemusíte zadávat umístění přepisovacího adresáře, protože výchozí cesta je /etc/insserv/overrides. Můžete také spustit insserv dry-run (-n), abyste ověřili, jak se skript spouští.

Následující jsou různé soubory, které budou zpracovány příkazem insserv:

  • /etc/insserv.conf – Konfigurační soubor pro insserv, který definuje systémová zařízení LSB.
  • /etc/insserv.conf.d/ – Adresář pro další konfigurační soubory pro deklaraci systémových zařízení LSB.
  • /etc/insserv/overrides/ – Cesta k nahrazení stávajících záhlaví komentářů LSB záhlavími komentářů nalezenými v této cestě.
  • /etc/init.d/ – Cesta k základnímu adresáři skriptu SuSE init, jak to vyžaduje specifikace Linux Standard Base Specification (LSB)

Linux
  1. Příklady příkazů „shutdown“ v Linuxu

  2. Příklady příkazů resize2fs v Linuxu

  3. Příklady příkazů localectl v Linuxu

  1. 12 Příklady IP příkazů pro uživatele Linuxu

  2. Linux killall příkaz pro začátečníky (8 příkladů)

  3. Linux Shutdown Command (s příklady)

  1. Linuxový příkaz dir pro začátečníky (10 příkladů)

  2. Příkaz Linux rm vysvětlený pro začátečníky (8 příkladů)

  3. Linux ln Command Tutorial pro začátečníky (5 příkladů)