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.
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.