GNU/Linux >> Linux Esercitazione >  >> Linux

10 esempi di comandi insserv per gli script di inizializzazione del sistema Linux

Il comando insserv viene utilizzato per controllare l'ordine di avvio e arresto dei servizi che si trovano su un sistema Linux.

Abilita uno script di inizializzazione del sistema installato (script di avvio) leggendo l'intestazione del commento dello script di inizializzazione e calcolando le dipendenze tra tutti gli script.

Insserv ricerca le funzionalità di sistema nel file di configurazione /etc/insserv.conf e nella directory /etc/insserv.conf.d.

1. init.d Formato intestazione script

Tutti gli script nella directory /etc/init.d dovrebbero avere un'intestazione come quella di seguito. Anche se le righe sono commentate (come sotto) nella sezione dell'intestazione di ogni script, insserv dovrebbe comunque essere in grado di leggere tutte queste righe e abilitare tutti gli script di inizializzazione di conseguenza.

Nell'esempio seguente, la riga che inizia con "# Required-Start:$local_fs boot.localnet" consente a insserv di eseguire/verificare lo script $local_fs e gli script boot.localnet prima che lo script boot.kdump possa essere eseguito.

Allo stesso modo, le righe "# Required-Stop:$local_fs boot.localnet" consentono a insserv di interrompere i servizi prima che questo script venga eseguito.

Se non conosci gli script di inizializzazione, dovresti capire come scrivere script di inizializzazione personalizzati basati su 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. Formato file insserv.conf

Quello che segue è un esempio di /etc/insserv.conf, che è il file di configurazione utilizzato dal comando 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

Nel file di configurazione sopra:

  • $network è uno pseudo nome che fa riferimento allo script /etc/init.d/network.
  • Allo stesso modo vedrai lo pseudo nome di ogni script in /etc/insserv.conf. Questi sono gli pseudo nomi che verranno utilizzati nella sezione dell'intestazione dello script di avvio.
  • Ogni riga che inizia con $ e un nome successivo definisce una struttura di sistema in base alla Linux Standard Base Specification (LSB)
  • Tutti i nomi seguiti da tale struttura di sistema dichiareranno le dipendenze richieste della struttura.
  • Se è disponibile il servizio con il nome dopo il segno più, verrà utilizzato. Se non è disponibile, viene ignorato silenziosamente.
  • Le parole che iniziano con sono parole chiave.
  • Attualmente è l'unica parola chiave conosciuta per contrassegnare un servizio come interattivo, ad es. un servizio che richiede l'immissione di una passphrase o di una password durante l'avvio o la modifica del runlevel.

3. Aggiungi un servizio

Ecco un esempio su come aggiungere un semplice servizio utilizzando l'utilità insserv.

Innanzitutto, verifica che il file eseguibile si trovi nella directory /etc/init.d.

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

Quindi, esegui il comando insserv per abilitare il servizio joystick.

# insserv joystick

Dopo il comando insserv sopra, esegui chkconfig per verificare che sia stato aggiunto all'elenco di avvio.

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

Si noti che quanto sopra è un esempio molto semplice senza dipendenze. Ma il potere di insserv è dove risolverà automaticamente e aggiungerà tutti gli script dipendenti appropriati.

4. Eseguire il test di esecuzione

Per eseguire il funzionamento a secco senza abilitare nessuno dei servizi, utilizzare il flag -n come mostrato di seguito.

# 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. Rimuovere un servizio

Usa l'opzione -r come mostrato di seguito per rimuovere un servizio.

# insserv -r joystick

Dopo aver rimosso un servizio, non lo vedrai nell'output di chkconfig.

# chkconfig --list | grep joystick

6. Usa il livello di esecuzione predefinito

Per utilizzare i livelli di esecuzione predefiniti definiti negli script, utilizzare l'opzione -d. Se hai modificato uno schema di collegamento a livello di esecuzione, questo potrebbe ripristinare tali modifiche.

# insserv –d

Per utilizzare i livelli di esecuzione predefiniti definiti negli script, utilizzare l'opzione –d. Nell'esempio seguente, insserv utilizzerà il livello di esecuzione definito nello script invece di eseguire lo script dal livello di esecuzione definito dal sistema o dall'utente.

# 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. Forza l'esecuzione del servizio

Per forzare l'esecuzione ignorando il servizio richiesto, utilizzare l'opzione -f come mostrato di seguito.

# insserv –f

Per forzare il sistema a ignorare gli altri servizi richiesti o gli script dipendenti, utilizzare l'opzione –f. Nell'esempio seguente, per eseguire lo script /etc/init.d/openhpid, è necessario avviare prima altre dipendenze come network, remote ,syslog services.

# 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

È possibile forzare il sistema a eseguire lo script /etc/init.d/openhpid ignorando lo stato dei servizi di rete, remoti e syslog utilizzando il comando insserv come mostrato di seguito:

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

Inoltre, puoi utilizzare l'opzione -v insieme a uno qualsiasi degli output precedenti per vedere maggiori dettagli su ciò che sta facendo il comando.

# insserv –dv

8. Modifica la directory degli script

Come puoi vedere da tutti gli esempi precedenti, lo script è posizionato nella directory /etc/init.d per impostazione predefinita. Se vuoi che insserv utilizzi una directory diversa per lo script, usa l'opzione -p.

Ad esempio, quanto segue utilizzerà la directory /etc/init.d.custom come posizione dello script.

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

9. Inserisci il file di configurazione personalizzato

Per specificare il percorso del file di configurazione utilizzare l'opzione -c. Viene utilizzato sia per il file insserv.conf che per la directory insserv.conf.d.

# insserv –c <config file>

Diciamo ad esempio che si desidera utilizzare un percorso diverso per il file di configurazione anziché /etc/insserv.conf, quindi è possibile utilizzare il comando come mostrato nell'esempio seguente.

Ciò è molto utile quando si desidera apportare modifiche al file /etc/insserv.conf ed eseguire procedure di prova (-n) a scopo di convalida. Eseguire il backup del file originale, modificarlo con le modifiche necessarie e quindi puntare alla nuova posizione.

Al termine di tutti i test, puoi eseguire lo stesso comando per ripristinare il file di configurazione originale o utilizzare la nuova posizione.

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

10. Insserv Override e file correlati

Per sovrascrivere il percorso per sostituire /etc/insserv/overrides, utilizzare la seguente opzione.
Per impostazione predefinita, le intestazioni dei commenti LSB che si trovano nella directory predefinita /etc/insserv/overrides sovrascriveranno le intestazioni dei commenti LSB per gli script che si trovano sotto la directory /etc/init.d.

Ma, se vuoi specificare la tua directory di override, usa l'opzione -o. Quanto segue definisce /etc/insserv/my.overrides come directory di sostituzione.

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

Per sovrascrivere o sostituire le intestazioni dei commenti LSB con i nuovi commenti, puoi creare un file con le nuove intestazioni nel percorso specifico e indicare a insserv di cercare un nuovo file invece di cercare i commenti definiti nello script originale.

Nell'esempio seguente, /etc/init.d/splash è uno script che contiene i seguenti commenti LSB, questi commenti vengono utilizzati per determinare quali servizi devono essere avviati o arrestati per primi.

# 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

Se non si desidera utilizzare i commenti LSB sopra e non si desidera modificare lo script esistente, è possibile copiare il file nella directory /etc/insserv/overrides ed eseguire il comando insserv seguente per dire al sistema di utilizzare lo script definito nella directory di sostituzione,

insserv -o splash

Non è necessario specificare la posizione della directory di override poiché il percorso predefinito è /etc/insserv/overrides. Puoi anche eseguire insserv dry-run (-n) per verificare come viene eseguito lo script.

Di seguito sono riportati i vari file che verranno elaborati dal comando insserv:

  • /etc/insserv.conf – File di configurazione per insserv che definisce le strutture del sistema LSB.
  • /etc/insserv.conf.d/ – Directory per ulteriori file di configurazione per la dichiarazione delle strutture del sistema LSB.
  • /etc/insserv/overrides/ – Percorso per sostituire le intestazioni dei commenti LSB esistenti con le intestazioni dei commenti trovate in questo percorso.
  • /etc/init.d/ – Percorso della directory di base dello script init SuSE come richiesto dalla Linux Standard Base Specification (LSB)

Linux
  1. Comando killall Linux per principianti (8 esempi)

  2. Comando di arresto di Linux (con esempi)

  3. Esempi di comandi di "spegnimento" in Linux

  4. Esempi di comandi resize2fs in Linux

  5. Localctl Esempi di comandi in Linux

Tutorial sui comandi Linux ss per principianti (8 esempi)

Spiegazione del comando di uptime di Linux per principianti con esempi

Comando di localizzazione Linux per principianti (8 esempi)

16 Esempi pratici di comando Linux LS per principianti

Spiegazione del comando Linux mv per principianti (8 esempi)

Comando Linux Uptime con esempi