¿Cómo cambiar el orden de inicio / inicio de los servicios de Linux?


Respuestas:


11

Puede cambiar el orden renombrando los enlaces simbólicos en /etc/rcX.d/ donde x será su nivel de ejecución.

Verás un montón de archivos que comienzan con Sxx o Kxx. Los enlaces S se rastrean durante el inicio, mientras que los K se analizan para el apagado. El xx aquí representa el orden.

Pero este orden se establece por una razón, así que tenga cuidado al cambiarlos, por ejemplo. ntpd debería comenzar solo después de que se inicialice el subsistema de red.


21

En lugar de hacerlo manualmente, como se sugiere en las otras respuestas, también puede cambiar el guión de inicio. Simplemente agregue dicha línea al encabezado:

# chkconfig: 35 90 10

Esto le indicará chkconfigque agregue el servicio a los niveles de ejecución 3 y 5, con una posición inicial de 90 y una posición final de 10.


Esta. Absolutamente esto. Si cambia el nombre manualmente de los enlaces simbólicos, se sorprenderá si alguien viene y correchkconfig off servicename && chkconfig on servicename
batfastad

Trabajado como un encanto. Necesitaba configurar dependencias entre mysqld y un contenedor de servlet. No pude determinar la posición de inicio de mysqld, así que configuré la posición de inicio del contenedor de servlet en 99 y funciona bien, mysqld comienza primero. Gracias.
jpangamarca

7

Desea leer un poco sobre sus niveles de ejecución y directorios rc.d. Dentro de los directorios rc.d puede encontrar los enlaces S y K, como S20apache K10apache, que es básicamente lo que ordena el inicio / apagado de los scripts.

Se están realizando algunos cambios en esta arquitectura, pero la mayoría de los Linux todavía la están utilizando.


Me sorprende que la mayoría de las distribuciones sigan usando este sistema; mejores sistemas como rcorderhan existido por un tiempo.
Chris S

Envidio un poco a Solaris svc, pero podría prescindir de las cosas xml
coredump

Esto es perfecto. Sin embargo, dependiendo de su distribución, puede tener diferentes formas de alterar este valor, así que lea la documentación específica para su distribución.
Andrew M.

1
Algunas distribuciones, como Ubuntu, usan Upstart ( Wikipedia ).
Pausado hasta nuevo aviso.

7

Si ha llegado aquí, es probable que tenga dos servicios en los que uno depende del otro pero, debido a que están comenzando en el orden incorrecto, el que tiene la dependencia no puede iniciarse. Las sugerencias sobre la edición de los enlaces simbólicos son informativas, en términos de ilustrar cómo se ejecuta la secuencia de inicio, y funcionarían bien hasta que alguien hiciera un "chkconfig on" en su servicio, momento en el que los enlaces simbólicos se volverían a crear como estaban originalmente. Realmente, desea tratar el problema en el nivel de script de inicio, que en realidad es mucho menos complicado de todos modos. También será consistente en los diferentes niveles de ejecución. Probablemente no necesite agregar una línea "# chkconfig" como se sugiere en la respuesta 4, ya que probablemente ya habrá una línea similar allí.

Usaré un ejemplo de un servidor que ejecuta Openldap (slapd) con un servidor de base de datos MySQL (mysqld). Configurar ese par, y por qué es posible que desee, es otra historia.

En el arranque, Openldap no puede iniciarse porque depende de MySQL y la secuencia de inicio lo tiene intentando iniciar antes: slapd tiene la posición 27 y mysqld tiene la posición 64

Los enlaces simbólicos relevantes en /etc/rc3.d/ son

S27slapd -> ../init.d/slapd 
and
S64mysqld -> ../init.d/mysqld

Busco valores establecidos en los dos scripts de inicio:

[root ~]# grep chkconfig /etc/rc.d/init.d/mysqld
# chkconfig: - 64 36

[root ~]# grep chkconfig /etc/rc.d/init.d/slapd
# chkconfig: - 27 73 

Edito la línea chkconfig en /etc/rc.d/init.d/slapd para tener una posición de inicio más alta que la de /etc/rc.d/init.d/mysqld (elegí 85)

[root ~]# grep chkconfig /etc/rc.d/init.d/slapd
# chkconfig: - 85 73

Hago "chkconfig slapd on" y vuelvo a comprobar los enlaces simbólicos

[root ~]# chkconfig slapd on
[root ~]# ls -l /etc/rc3.d/ | grep mysqld
lrwxrwxrwx  1 root root 16 Dec 10 13:45 S64mysqld -> ../init.d/mysqld
[root ~]# ls -l /etc/rc3.d/ | grep slapd
lrwxrwxrwx  1 root root 15 Apr 28 14:18 S85slapd -> ../init.d/slapd

Ahora, cuando se inicia este servidor, mysqld se inicia antes de bofetadas y todo está bien con el mundo.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.