GNU/Linux >> Tutoriales Linux >  >> Linux

10 ejemplos de comandos insserv para secuencias de comandos de inicio del sistema Linux

El comando insserv se utiliza para controlar el orden de inicio y finalización de los servicios que se encuentran en un sistema Linux.

Habilita una secuencia de comandos de inicio del sistema instalada (secuencia de comandos de arranque) leyendo el encabezado de comentario de la secuencia de comandos de inicio y calculando las dependencias entre todas las secuencias de comandos.

Insserv busca las instalaciones del sistema en el archivo de configuración /etc/insserv.conf y el directorio /etc/insserv.conf.d.

1. Formato de encabezado de secuencia de comandos init.d

Todos los scripts en el directorio /etc/init.d deben tener un encabezado como el siguiente. Incluso si las líneas están comentadas (como a continuación) en la sección de encabezado de cada secuencia de comandos, insserv aún debería poder leer todas estas líneas y habilitar todas las secuencias de comandos de inicio en consecuencia.

En el siguiente ejemplo, la línea que comienza con "# Required-Start:$local_fs boot.localnet" permite que insserv ejecute/verifique el script $local_fs y los scripts boot.localnet antes de que se pueda ejecutar el script boot.kdump.

De la misma manera, las líneas “# Required-Stop:$local_fs boot.localnet” permiten que insserv detenga los servicios antes de que se ejecute este script.

Si es nuevo en los scripts de inicio, debe comprender cómo puede escribir scripts de inicio personalizados basados ​​en 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 de archivo insserv.conf

El siguiente es un ejemplo de /etc/insserv.conf, que es el archivo de configuración utilizado por el 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

En el archivo de configuración anterior:

  • $network es un pseudo nombre que hace referencia al script /etc/init.d/network.
  • Del mismo modo, verá el seudónimo de cada secuencia de comandos en /etc/insserv.conf. Estos son los pseudo nombres que se usarán en la sección de encabezado del script de arranque.
  • Cada línea que comienza con $ y un nombre siguiente define una instalación del sistema de acuerdo con la especificación básica estándar (LSB) de Linux
  • Todos los nombres seguidos de dicha instalación del sistema declararán las dependencias requeridas de la instalación.
  • Si el servicio con el nombre después del signo más está disponible, se utilizará. Si no está disponible, se ignora en silencio.
  • Las palabras que comienzan con son palabras clave.
  • Actualmente, es la única palabra clave conocida para marcar un servicio como interactivo, p. un servicio que requiere una frase de paso o entrada de contraseña durante el arranque o el cambio de nivel de ejecución.

3. Agregar un servicio

Aquí hay un ejemplo de cómo agregar un servicio simple usando la utilidad insserv.

Primero, verifique que el archivo ejecutable esté en el directorio /etc/init.d.

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

A continuación, ejecute el comando insserv para habilitar el servicio de joystick.

# insserv joystick

Después del comando insserv anterior, ejecute chkconfig para verificar que se agregue a la lista de inicio.

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

Tenga en cuenta que lo anterior es un ejemplo muy simple sin dependencias. Pero, el poder de insserv es donde automáticamente resolverá y agregará todos los scripts dependientes apropiados.

4. Realizar prueba de funcionamiento

Para realizar una ejecución de prueba sin habilitar ninguno de los servicios, use el indicador -n como se muestra a continuación.

# 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. Eliminar un servicio

Use la opción -r como se muestra a continuación para eliminar un servicio.

# insserv -r joystick

Después de eliminar un servicio, no lo verá en la salida de chkconfig.

# chkconfig --list | grep joystick

6. Usar nivel de ejecución predeterminado

Para utilizar los niveles de ejecución predeterminados definidos en los scripts, utilice la opción -d. Si ha editado un esquema de enlace de nivel de ejecución, esto puede restaurar esos cambios.

# insserv –d

Para usar los niveles de ejecución predeterminados definidos en los scripts, use la opción -d. En el siguiente ejemplo, insserv utilizará el nivel de ejecución definido en el script en lugar de ejecutar el script desde el nivel de ejecución definido por el sistema o el usuario.

# 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. Forzar ejecución del servicio

Para forzar la ejecución ignorando el servicio requerido, use la opción -f como se muestra a continuación.

# insserv –f

Para obligar al sistema a ignorar los otros servicios requeridos o scripts dependientes, use la opción -f. En el siguiente ejemplo, para que se ejecute el script /etc/init.d/openhpid, primero se deben iniciar otras dependencias como servicios de red, remotos y 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

Puede obligar al sistema a ejecutar el script /etc/init.d/openhpid ignorando el estado de los servicios de red, remotos y syslog utilizando el comando insserv como se muestra a continuación:

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

Además, puede usar la opción -v junto con cualquiera de los resultados anteriores para ver más detalles sobre lo que está haciendo el comando.

# insserv –dv

8. Cambiar el directorio de secuencias de comandos

Como puede ver en todos los ejemplos anteriores, el script se coloca en el directorio /etc/init.d de forma predeterminada. Si desea que insserv use un directorio diferente para el script, use la opción -p.

Por ejemplo, lo siguiente utilizará el directorio /etc/init.d.custom como ubicación del script.

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

9. Archivo de configuración personalizado de Insserv

Para especificar la ruta del archivo de configuración, use la opción -c. Esto se usa tanto para el archivo insserv.conf como para el directorio insserv.conf.d.

# insserv –c <config file>

Digamos, por ejemplo, que le gustaría usar una ruta diferente para el archivo de configuración en lugar de /etc/insserv.conf, entonces puede usar el comando como se muestra en el siguiente ejemplo.

Esto es muy útil cuando desea realizar cambios en el archivo /etc/insserv.conf y ejecutar procedimientos de ejecución en seco (-n) con fines de validación. Haga una copia de seguridad del archivo original, modifíquelo con los cambios que necesite y luego apunte a la nueva ubicación.

Una vez que haya terminado con todas sus pruebas, puede ejecutar el mismo comando para volver al archivo de configuración original o usar la nueva ubicación.

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

10. Anulación de Insserv y archivos relacionados

Para anular la ruta para reemplazar /etc/insserv/overrides, utilice la siguiente opción.
De forma predeterminada, los encabezados de comentarios LSB que se encuentran en el directorio predeterminado /etc/insserv/overrides anularán los encabezados de comentarios LSB para las secuencias de comandos que se encuentran en el directorio /etc/init.d.

Pero, si desea especificar su propio directorio de anulación, use la opción -o. Lo siguiente define /etc/insserv/my.overrides como el directorio de anulación.

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

Para anular o reemplazar los encabezados de comentarios LSB con los nuevos comentarios, puede crear un archivo con los nuevos encabezados en la ruta específica e indicarle a insserv que busque un nuevo archivo en lugar de buscar los comentarios definidos en el script original.

En el siguiente ejemplo, /etc/init.d/splash es un script que tiene los siguientes comentarios LSB, estos comentarios se utilizan para determinar qué servicios deben iniciarse o detenerse primero.

# 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 no desea utilizar los comentarios LSB anteriores y tampoco desea modificar la secuencia de comandos existente, puede copiar el archivo en el directorio /etc/insserv/overrides y ejecutar el siguiente comando insserv para indicarle al sistema que utilice la secuencia de comandos definida. en el directorio de anulación,

insserv -o splash

No necesita especificar la ubicación del directorio de anulación ya que la ruta predeterminada es /etc/insserv/overrides. También puede ejecutar insserv dry-run (-n) para verificar cómo se ejecuta el script.

Los siguientes son los diversos archivos que serán procesados ​​por el comando insserv:

  • /etc/insserv.conf:archivo de configuración para insserv que define las instalaciones del sistema LSB.
  • /etc/insserv.conf.d/:directorio para archivos de configuración adicionales para declarar las instalaciones del sistema LSB.
  • /etc/insserv/overrides/:ruta para reemplazar los encabezados de comentarios LSB existentes con los encabezados de comentarios que se encuentran en esta ruta.
  • /etc/init.d/:ruta al directorio base del script de inicio de SuSE según lo exige la especificación básica estándar (LSB) de Linux

Linux
  1. Comando killall de Linux para principiantes (8 ejemplos)

  2. Comando de apagado de Linux (con ejemplos)

  3. Ejemplos de comandos "apagar" en Linux

  4. Ejemplos de comandos resize2fs en Linux

  5. Ejemplos de comandos localectl en Linux

Tutorial de comandos ss de Linux para principiantes (8 ejemplos)

Comando uptime de Linux explicado para principiantes con ejemplos

Comando de localización de Linux para principiantes (8 ejemplos)

16 ejemplos prácticos del comando Linux LS para principiantes

Comando mv de Linux explicado para principiantes (8 ejemplos)

Comando Uptime de Linux con ejemplos