Tutorial de aprendizaje de script de inicio de Linux

  
 

One, init y runlevel

Los amigos que han estado expuestos a Linux deberían haber aprendido que el init tradicional define siete niveles de ejecución, como el nivel 0 está

desactivado El sistema, entrada de nivel 2 es una interfaz de caracteres multiusuario, nivel 5 es una interfaz gráfica, etc.

El archivo /etc /inittab especifica los comandos que deben ejecutarse cuando el sistema ingresa en cada nivel de ejecución. Cuando la máquina arranca, el inicio se inicia en el nivel de fila 0 de

nivel, nivel uno. Ejecute el nivel de ejecución predeterminado establecido en el archivo /etc /inittab.

Modifique el nivel de ejecución predeterminado del sistema:

#vi /etc /inittab

Encuentre los siguientes campos

id: 5: initdefault:


//Editar archivo inittab

//El nivel de ejecución predeterminado es 5, lo que significa que puede ingresar a la interfaz gráfica directamente cuando se inicia el sistema. Podemos

modificando esto El nivel de ejecución predeterminado para el inicio del sistema digital personalizado.

Segundo, conozca el script de inicio del servicio

Un artículo en frente de mi blog introdujo cómo escribir y configurar un nuevo script de inicio del servicio (detallado en Vea linux

Configure una aplicación (software) como un servicio del sistema), simplemente tomó el concepto de un script de inicio, y aquí nuevamente.

Todos los scripts de inicio se almacenan en /etc/init.d/. Podemos iniciar

una aplicación usando el modo de inicio /etc/init.d/scriptname.

Por ejemplo, ingrese el comando " /etc/init.d/smb start " para iniciar el servicio smb.

Si está en un sistema RedHat, también puede iniciar un servicio con service smb start.

Aunque los scripts en el directorio /etc/init.d pueden iniciar y detener servicios individuales, init no se encuentra directamente en el directorio

/etc/init.d cuando se inicia el sistema. El script de inicio para cada servicio se busca en el directorio /etc/rc.d/, que contiene los subdirectorios de rc0.d,

rc1.d, etc., que representan diferentes niveles de inicio de inicio. El directorio contiene el script de inicio para el nivel de inicio correspondiente,

como se muestra:

script de inicio1

A continuación, echemos un vistazo a los directorios contenidos en estos directorios rcx.d. El contenido, el contenido son todos los enlaces simbólicos, vinculados al script en el directorio de inicio de nivel superior

.

Todos estos nombres de enlaces simbólicos comienzan con S o K seguidos de un número y el nombre del servicio controlado por el script, como

S10network.

Cuando init realiza la transición de un nivel de ejecución bajo a un nivel de ejecución alto, ejecuta todos los scripts que comienzan con S en orden numéricamente creciente,

S = start, que corresponde al script de inicio. Servicio; K = matar, es decir, eliminar el servicio correspondiente del script

Primero, observe el nivel de ejecución predeterminado del sistema init5 (es decir, arranque directamente desde la interfaz gráfica) el directorio del script correspondiente rc5.d,

Figura:

Startup script 2


El directorio rc5.d contiene los scripts K y los scripts S. Cuando se inicia el sistema, el inicio se vincula con estos símbolos. La secuencia de números comienza con

todos los scripts S. se abren. Cuando el sistema se apaga, init también cierra las aplicaciones correspondientes a todos los scripts en orden.

Puede ver que estos enlaces simbólicos en realidad apuntan al script de inicio en el directorio init.d: ​​

Script de inicio 3

Script de inicio 4

Ahora mire hacia atrás en el contenido del directorio rc0.d (es decir, cierre del sistema):

Guión de inicio 5

Puede ver todos los enlaces simbólicos que comienzan con K en el directorio rc0.d, cuando escribimos Todos los servicios del sistema están cerrados por

cuando se ordena init 0.

El contenido del otro directorio rcx.d es similar, son algunos enlaces simbólicos al script de inicio, simplemente coloque diferentes enlaces simbólicos de script de inicio según diferentes niveles de ejecución

.

Tres, el orden de los servicios de inicio personalizados

Antes de introducirlo en el directorio rcx.d, el enlace simbólico al script de inicio se compone de K o S + número + nombre del servicio, en medio de este

Los números son muy importantes. Cuando se inicia el sistema, todos los scripts que comienzan con S se ejecutan en incrementos de este número. Cuando el sistema se apaga, todos los scripts que comienzan con K se ejecutan de acuerdo con este número de

.

Sabiendo esto, podemos controlar el orden en que los servicios se inician de acuerdo con nuestras propias necesidades.


¿Cómo personalizar los enlaces simbólicos?

Secuencia de inicio:

#ln -s /etc/init.d/smb S60smb //Redefiniendo el orden de inicio de la secuencia de comandos del servicio smb

Figura:

Startup script 6


Start script 7

Cerrar script:

#ln -s /etc/init.d/smb K60smb //Al igual que el script de inicio, S cambió a linux boot inicia automáticamente el método de script 1, los puntos de conocimientos básicos relacionados 1) El modo de inicio de Redhat y el orden de ejecución se cargan. El primer script /etc/rc.d/rc $ RUNLEVEL # $ RUNLEVEL modo de ejecución predeterminado /etc/rc.d/rc.local #El nivel correspondiente después de que se inicia el servicio, el archivo se ejecuta (de hecho, también puede ser necesario El comando ejecutado se escribe en el archivo) /sbin /mingetty #Wait para inicio de sesión de usuario

En Redhat, /etc/rc.d/rc.sysinit realiza el mismo trabajo de inicialización en cada modo de ejecución, incluido : Llamando al mapa de teclas y las fuentes del sistema

Comenzando el intercambio

Configurando el nombre de host

Configurando el nombre de dominio NIS

Comprobando (fsck) y montando el sistema de archivos

Cuota abierta

Cargar módulo de tarjeta de sonido

Configurar el reloj del sistema

Espera.

/etc/rc.d/rc Los scripts en el directorio apropiado de la línea

se ejecutan de acuerdo con el modo de ejecución especificado por sus parámetros (nivel de ejecución, que puede establecer en el archivo inittab). Cualquier cosa que comience con Kxx se llama con stop como el argumento; si comienza con Sxx,

se llama con el inicio como argumento. El orden de las llamadas se ejecuta desde xx hasta pequeño.
(donde xx es un número, que indica el orden de

). Por ejemplo, asumiendo que el modo de operación predeterminado es 3, /etc/rc.d/rc llamará a /etc/rc.d como se describió anteriormente.

script bajo /rc3.d/. Vale la pena mencionar que los modos de ejecución 2, 3 y 5 en Redhat usan /etc/rc.d/rc.local como el último

en el script de inicialización, para que el usuario pueda poseer este archivo. Agregue algunos comandos que deben ejecutarse

antes de iniciar sesión después de otro trabajo de inicialización.

init Después de esperar a que se ejecute /etc/rc.d/rc (porque la acción en /etc/rc.d/rc en /etc /inittab está a la espera),

será Ejecute /sbin /mingetty en cada terminal virtual especificada y espere el inicio de sesión del usuario.

En este punto, el inicio de LINUX termina.

2) niveles de ejecución y directivas de init

1. Qué es INIT:

init es uno de los programas indispensables en las operaciones del sistema Linux.

El llamado proceso de inicio, que es un proceso de nivel de usuario iniciado por el kernel.

Una vez que el kernel se inicia solo (se ha cargado en la memoria, se ha iniciado la ejecución y se han inicializado todos los controladores de dispositivos y los nodos de datos), se inicia con un programa de inicio de programa de usuario. La forma de completar el proceso de arranque. Por lo tanto, init es siempre el primer proceso de

(su número de proceso es siempre 1).

El kernel lo buscará en algunos lugares donde se ha utilizado init en el pasado, y su ubicación correcta (para sistemas Linux) es

Copyright © Conocimiento de Windows All Rights Reserved