Necesito ejecutar un proceso antes de iniciar sesión en el sistema. ¿Cómo ejecutarlo como servicios? ¿Cómo hago servicios en Linux?
¿En Ubuntu y Fedora? El servicio es personalizado tomcat
Necesito ejecutar un proceso antes de iniciar sesión en el sistema. ¿Cómo ejecutarlo como servicios? ¿Cómo hago servicios en Linux?
¿En Ubuntu y Fedora? El servicio es personalizado tomcat
Respuestas:
Para ejecutar un servicio sin o antes de iniciar sesión en el sistema (es decir, "en el arranque"), deberá crear un script de inicio y agregarlo a la secuencia de arranque.
Hay tres partes en un script de servicio: iniciar, detener y reiniciar.
La estructura básica de un script de servicio es:
#!/bin/bash
#
RETVAL=0;
start() {
echo “Starting <Service>”
}
stop() {
echo “Stopping <Service>”
}
restart() {
stop
start
}
case “$1″ in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo $”Usage: $0 {start|stop|restart}”
exit 1
esac
exit $RETVAL
Una vez que haya ajustado el script a su gusto, simplemente colóquelo en /etc/init.d/
Y agréguelo al proceso de inicio del servicio del sistema (en Fedora, no soy un usuario de Ubuntu,> D):
chkconfig -add <ServiceName>
El servicio se agregará al proceso de inicio del sistema y no tendrá que volver a iniciarlo manualmente.
¡Aclamaciones!
Dependiendo del sistema de inicio, puede crear una secuencia de comandos de inicio diferente. Fedora le ofrece un sistema de arranque y sistemad para elegir, y, por supuesto, compatibilidad con SysV.
/etc/init/custom-tomcat.conf
poner dentro:
start on stopped rc RUNLEVEL=3
respawn
exec /path/to/your/tomcat --and --parameters
Y su Tomcat debería comenzar al iniciar el sistema.
/etc/systemd/system/custom-tomcat.service
poner dentro:
[Service]
ExecStart=/path/to/your/tomcat --and --parameters
Restart=always
[Install]
WantedBy=multi-user.target
y habilite su servicio usando systemctl enable custom-tomcat.service
. Se iniciará cada arranque normal.
Por supuesto, hay pocas opciones de configuración más para ambos sistemas init, puede verificarlas en su documentación.
Tomcat es un servicio bastante común, recomendaría mirar el script de inicio proporcionado por la distribución ya. Lo más probable es que funcione con su binario personalizado, con pocos o ningún ajuste.
Si tiene un cron
demonio, uno de los ganchos de tiempo cron predefinidos es @reboot
, que naturalmente se ejecuta cuando se inicia el sistema. Ejecute crontab -e
para editar su crontab
archivo y agregue una línea:
@reboot /your/command/here
Puede crear un script más sofisticado, que le permite ejecutar bajo los permisos de un usuario específico, de la siguiente manera:
#!/bin/sh
NAME=myservice
DESC="My Service"
USERGROUP="myservice:myservice"
#Helper functions
start() {
start-stop-daemon --start --quiet --background --make-pidfile \
--pidfile /var/run/$NAME.pid --chuid $USERGROUP \
--exec /usr/local/bin/myservice
}
stop() {
start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
--exec myservice --retry 30
}
case "$1" in
start)
echo -n "Starting $DESC: "
start
echo "$NAME."
;;
stop)
echo -n "Stopping $DESC: "
stop
echo "$NAME."
;;
restart)
echo -n "Restarting $DESC: "
#set +e
stop
#set -e
#sleep 1
start
echo "$NAME."
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart}" >&2
exit 1
;;
esac
exit 0
El script va en /etc/init.d/myservice, y usted inicia el servicio ejecutando:
/etc/init.d/myservice start
Lea la página de manual en start-stop-daemon para comprender cómo funciona.
En Ubuntu o Debian como puedes usar, para agregar
update-rc.d your_service defaults
para eliminar
update-rc.d -f your_service remove
¡Adiós! \ o
es bueno implementar el estado de las funciones y forzar la recarga para que sea compatible con LSB
service --status-all
lista?