GNU/Linux >> Tutoriels Linux >  >> Linux

10 exemples de commandes insserv pour les scripts d'initialisation du système Linux

La commande insserv est utilisée pour contrôler l'ordre de démarrage et d'arrêt des services qui se trouvent sur un système Linux.

Il active un script d'initialisation système installé (script de démarrage) en lisant l'en-tête de commentaire du script d'initialisation et en calculant les dépendances entre tous les scripts.

Insserv recherche les fonctionnalités du système dans le fichier de configuration /etc/insserv.conf et le répertoire /etc/insserv.conf.d.

1. Format d'en-tête de script init.d

Tous les scripts sous le répertoire /etc/init.d doivent avoir un en-tête comme ci-dessous. Même si les lignes sont commentées (comme ci-dessous) dans la section d'en-tête de chaque script, insserv devrait toujours pouvoir lire toutes ces lignes et activer tous les scripts d'initialisation en conséquence.

Dans l'exemple suivant, la ligne commençant par "# Required-Start:$local_fs boot.localnet" permet à l'insserv d'exécuter/vérifier le script $local_fs et les scripts boot.localnet ensuite avant que le script boot.kdump puisse être exécuté.

De la même manière, les lignes "# Required-Stop:$local_fs boot.localnet" permettent à insserv d'arrêter les services avant l'exécution de ce script.

Si vous débutez avec les scripts d'initialisation, vous devez comprendre comment vous pouvez écrire des scripts d'initialisation personnalisés basés sur 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. Format de fichier insserv.conf

Voici un exemple de /etc/insserv.conf, qui est le fichier de configuration utilisé par la commande 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

Dans le fichier de configuration ci-dessus :

  • $network est un pseudo nom faisant référence au script /etc/init.d/network.
  • De même, vous verrez le pseudo de chaque script dans /etc/insserv.conf. Ce sont les pseudo-noms qui seront utilisés dans la section d'en-tête du script de démarrage.
  • Chaque ligne qui commence par $ et un nom suivant définit une installation système conformément à la spécification de base standard Linux (LSB)
  • Tous les noms suivis d'une telle installation système déclareront les dépendances requises de l'installation.
  • Si le service dont le nom suit le signe plus est disponible, il sera utilisé. S'il n'est pas disponible, il est ignoré en silence.
  • Les mots commençant par sont des mots clés.
  • Actuellement, est le seul mot clé connu pour marquer un service comme interactif, par ex. un service qui nécessite une phrase secrète ou un mot de passe lors du démarrage ou du changement de niveau d'exécution.

3. Ajouter un service

Voici un exemple sur la façon d'ajouter un service simple à l'aide de l'utilitaire insserv.

Tout d'abord, vérifiez que le fichier exécutable se trouve dans le répertoire /etc/init.d.

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

Ensuite, exécutez la commande insserv pour activer le service joystick.

# insserv joystick

Après la commande insserv ci-dessus, exécutez chkconfig pour vérifier qu'elle est ajoutée à la liste de démarrage.

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

Veuillez noter que ce qui précède est un exemple très simple sans dépendances. Mais la puissance d'insserv réside dans le fait qu'il résoudra et ajoutera automatiquement tous les scripts dépendants appropriés.

4. Effectuer un test de fonctionnement

Pour effectuer une simulation sans activer aucun des services, utilisez l'indicateur -n comme indiqué ci-dessous.

# 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. Supprimer un service

Utilisez l'option -r comme indiqué ci-dessous pour supprimer un service.

# insserv -r joystick

Après avoir supprimé un service, vous ne le verrez plus dans la sortie de chkconfig.

# chkconfig --list | grep joystick

6. Utiliser le niveau d'exécution par défaut

Pour utiliser les niveaux d'exécution par défaut définis dans les scripts, utilisez l'option -d. Si vous avez modifié un schéma de liens de niveau d'exécution, cela peut restaurer ces modifications.

# insserv –d

Pour utiliser les niveaux d'exécution par défaut définis dans les scripts, utilisez l'option –d. Dans l'exemple suivant, insserv utilisera le niveau d'exécution défini dans le script au lieu d'exécuter le script à partir du niveau d'exécution défini par le système ou l'utilisateur.

# 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. Forcer l'exécution du service

Pour forcer l'exécution en ignorant le service requis, utilisez l'option -f comme indiqué ci-dessous.

# insserv –f

Pour forcer le système à ignorer les autres services requis ou les scripts dépendants, utilisez l'option –f. Dans l'exemple suivant, pour que le script /etc/init.d/openhpid soit exécuté, d'autres dépendances telles que les services réseau, distants et syslog doivent être démarrées en premier.

# 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

Vous pouvez forcer le système à exécuter le script /etc/init.d/openhpid en ignorant l'état des services réseau, distants et syslog en utilisant la commande insserv comme indiqué ci-dessous :

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

En outre, vous pouvez utiliser l'option -v avec l'une des sorties ci-dessus pour voir plus de détails sur ce que fait la commande.

# insserv –dv

8. Modifier le répertoire des scripts

Comme vous le voyez dans tous les exemples précédents, le script est placé sous le répertoire /etc/init.d par défaut. Si vous souhaitez que insserv utilise un répertoire différent pour le script, utilisez l'option -p.

Par exemple, ce qui suit utilisera le répertoire /etc/init.d.custom comme emplacement du script.

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

9. Fichier de configuration personnalisé Insserv

Pour spécifier le chemin du fichier de configuration, utilisez l'option -c. Ceci est utilisé à la fois pour le fichier insserv.conf et le répertoire insserv.conf.d.

# insserv –c <config file>

Supposons, par exemple, que vous souhaitiez utiliser un chemin différent pour le fichier de configuration au lieu de /etc/insserv.conf, vous pouvez alors utiliser la commande comme indiqué dans l'exemple suivant.

Ceci est très utile lorsque vous souhaitez apporter des modifications au fichier /etc/insserv.conf et exécuter une procédure de simulation (-n) à des fins de validation. Sauvegardez le fichier d'origine, modifiez-le avec les modifications dont vous avez besoin, puis pointez vers le nouvel emplacement.

Une fois que vous avez terminé tous vos tests, vous pouvez exécuter la même commande pour revenir au fichier de configuration d'origine ou utiliser le nouvel emplacement.

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

10. Insserv Override et fichiers associés

Pour remplacer le chemin pour remplacer /etc/insserv/overrides, veuillez utiliser l'option suivante.
Par défaut, les en-têtes de commentaires LSB trouvés sous le répertoire par défaut /etc/insserv/overrides remplaceront les en-têtes de commentaires LSB pour les scripts trouvés sous le répertoire /etc/init.d.

Mais, si vous souhaitez spécifier votre propre répertoire de remplacement, utilisez l'option -o. Ce qui suit définit /etc/insserv/my.overrides comme répertoire de remplacement.

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

Afin de remplacer ou de remplacer les en-têtes de commentaires LSB par les nouveaux commentaires, vous pouvez créer un fichier avec les nouveaux en-têtes dans le chemin spécifique et demander à insserv de rechercher un nouveau fichier au lieu de rechercher les commentaires définis dans le script d'origine.

Dans l'exemple suivant, /etc/init.d/splash est un script qui a les commentaires LSB ci-dessous, ces commentaires sont utilisés pour déterminer quels services doivent être démarrés ou arrêtés en premier.

# 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

Si vous ne souhaitez pas utiliser les commentaires LSB ci-dessus et ne souhaitez pas non plus modifier le script existant, vous pouvez copier le fichier dans le répertoire /etc/insserv/overrides et exécuter la commande insserv ci-dessous pour indiquer au système d'utiliser le script défini. dans le répertoire override,

insserv -o splash

Vous n'avez pas besoin de spécifier l'emplacement du répertoire de remplacement car le chemin par défaut est /etc/insserv/overrides. Vous pouvez également exécuter insserv dry-run (-n) pour vérifier comment le script est exécuté.

Voici les différents fichiers qui seront traités par la commande insserv :

  • /etc/insserv.conf - Fichier de configuration pour insserv qui définit les installations du système LSB.
  • /etc/insserv.conf.d/ – Répertoire pour d'autres fichiers de configuration pour déclarer les installations du système LSB.
  • /etc/insserv/overrides/ – Chemin pour remplacer les en-têtes de commentaires LSB existants par les en-têtes de commentaires trouvés dans ce chemin.
  • /etc/init.d/ – Chemin d'accès au répertoire de base du script d'initialisation de SuSE, comme requis par la spécification de base standard Linux (LSB)

Linux
  1. Commande Linux killall pour les débutants (8 exemples)

  2. Commande d'arrêt Linux (avec exemples)

  3. Exemples de commande "shutdown" sous Linux

  4. Exemples de commandes resize2fs sous Linux

  5. Exemples de commandes localectl sous Linux

Tutoriel de commande Linux ss pour les débutants (8 exemples)

Commande de disponibilité Linux expliquée pour les débutants avec des exemples

Commande de localisation Linux pour les débutants (8 exemples)

16 exemples pratiques de commande Linux LS pour les débutants

Explication de la commande Linux mv pour les débutants (8 exemples)

Commande de disponibilité Linux avec exemples