GNU/Linux >> Tutoriales Linux >  >> Linux

¿La secuencia de comandos Init.d no se ejecuta en el arranque?

Mi secuencia de comandos no se ejecuta en el arranque en un cuadro vagabundo en Ubuntu.

Mi guión se ve así –

#!/bin/bash
# /etc/init.d/mailcatcher
### BEGIN INIT INFO
# Provides: scriptname
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
mailcatcher --http-ip 192.168.50.10

Mis permisos en el archivo se ven así –

-rwxr-xr-x 1 root root 352 Apr 30 09:59 mailcatcher.sh

Ejecuto el comando –

sudo update-rc.d "mailcatcher.sh" defaults

Si ejecuto el script manualmente, funciona e inicia el receptor de correo. Si reinicio la computadora, el demonio mailcatcher no se inicia. ¿Me estoy perdiendo algo?

Respuesta aceptada:

Y ahora las respuestas de Ubuntu.

Esta es una pregunta de Ubuntu Linux, y ahora se lanzó la versión 15. El mundo de Ubuntu ahora tiene systemd. Pero incluso antes de la versión 15, el mundo de Ubuntu había comenzado. Realmente no hay una razón para escribir System 5 rc guiones; y ciertamente no hay una buena razón para comenzar desde allí.

Tanto upstart como systemd hacen todos los "controles de servicio". Todo lo que necesita hacer es describir el servicio .

sistema

Una unidad de servicio systemd, que se colocará en /etc/systemd/system/mailcatcher.service , es

[Unit]
Description=Ruby MailCatcher
Documentation=http://mailcatcher.me/

[Service]
# Ubuntu/Debian convention:
EnvironmentFile=-/etc/default/mailcatcher
Type=simple
ExecStart=/usr/bin/mailcatcher --foreground --http-ip 192.168.50.10

[Install]
WantedBy=multi-user.target

Esto obtiene automáticamente uno de todos los controles systemd, como:

  • systemctl enable mailcatcher.service para configurar el servicio para que se inicie automáticamente al arrancar.
  • systemctl preset mailcatcher.service para configurar el servicio para que se inicie automáticamente al arrancar, si la política local lo permite.
  • systemctl start mailcatcher.service para iniciar el servicio manualmente.
  • systemctl status mailcatcher.service para ver el estado del servicio.

advenedizo

Upstart es similar, y modificar el archivo de trabajo upstart de Fideloper LLC a esta pregunta da esto para /etc/init/mailcatcher.conf :

description "Mailcatcher"

start on runlevel [2345]
stop on runlevel [!2345]

respawn

exec /usr/bin/mailcatcher --foreground --http-ip=192.168.50.10

Esto obtiene automáticamente uno de todos los controles advenedizos, como:

  • initctl start mailcatcher para iniciar el servicio manualmente.
  • initctl status mailcatcher para ver el estado del servicio.

Sección adicional de daemontools

Por diversión, para el entretenimiento de cualquier usuario de la familia daemontools que llegue a esto a través de una búsqueda en WWW, y para demostrar otra razón por la que no comenzar en el Sistema 5 rc scripts, ejecuté esa unidad de servicio systemd a través de convert-systemd-units del conjunto de herramientas nosh comando para producir el siguiente script de ejecución de la familia daemontools:

#!/bin/nosh
#Run file generated from ./mailcatcher.service
#Ruby MailCatcher
chdir /
read-conf --oknofile /etc/default/mailcatcher
/usr/bin/mailcatcher --foreground --http-ip 192.168.50.10

En realidad, el convert-systemd-units El comando genera un paquete de servicios nosh completo directorio. Con ese directorio, que especifica la dependencia y la información de pedido, instalado como /var/sv/mailcatcher en un sistema con nosh service-manager uno obtiene todos los controles de nosh, como:

  • system-control enable mailcatcher.service para configurar el servicio para que se inicie automáticamente al arrancar.
  • system-control start mailcatcher.service para iniciar el servicio manualmente.
  • system-control status mailcatcher.service para ver el estado del servicio.
  • system-control preset mailcatcher.service para configurar el servicio para que se inicie automáticamente en el arranque, si la configuración local (preajustes de estilo systemd o /etc/rc.conf{,.local} ) lo permite.
Relacionado:¿Deshabilitar el arranque híbrido en Windows 8?

Ni siquiera empezar con Sistema 5 rc archivos.

Mire esta plantilla utilizada por SaltStack para System 5 rc guiones. Incluso con la eliminación de la parametrización de SaltStack, son 59 líneas de código de script de shell, la mayoría de las cuales son repeticiones genéricas que tendría que reinventar y reescribir. Otra vez. Y Celada ya ha señalado dónde lo has reinventado mal.

El archivo de la unidad systemd tiene 11 líneas. El archivo de trabajo advenedizo es de 8 líneas. El nosh run script es 6. Y ellos hacen toda la mecánica de inicio/detención/estado por usted. No empieces con System V rc , especialmente no en Ubuntu Linux.

Lecturas adicionales

  • Configuración de Mailcatcher . 2014-10-21. Servidores para Hackers. Fideloper LLC.
  • James Hunt y Clint Byrum (2014). “Utilidades”. Libro de cocina Upstart .
  • Jonathan de Boyne Pollard (2014). Una mirada en paralelo a los scripts de ejecución y las unidades de servicio. . Respuestas frecuentes.

Linux
  1. Shell Script:¿Condición "si el archivo no se está utilizando"?

  2. servicio:comando no encontrado

  3. Cómo hacer que un script de Python se ejecute como un servicio o demonio en Linux

  4. Ejecute el script php como proceso daemon

  5. Ruby script como servicio

Cómo ejecutar un script al arrancar en Debian 11

Cómo ejecutar Shell Script como servicio SystemD en Linux

Cómo ejecutar un script Bash

¿Cómo hacer que el script de Python se ejecute como servicio?

Ejecutar script bash como demonio

Upstart:ejecute el servicio como usuario sin privilegios y el script de preinicio como root