Soy bastante nuevo en Linux y quiero saber qué hacer para iniciar un archivo .sh al iniciar la máquina. Básicamente, tengo una máquina servidor con sistema operativo Linux y quiero ejecutar alguna aplicación jboss cuando el sistema se reinicia o falla.
Agregué S99jBossServers
en rc2.d con un enlace /etc/rc.d/init.d/jBossServers.sh
y le di permiso total (777) parajBossServers.sh
el contenido jBossServers.sh
es el siguiente
#!/bin/sh
#
# chkconfig: 2345 80 30
# description:
#
RETVAL=0
start () {
/root/batch/startSikkimCA.sh
/root/batch/startSikkimSp.sh
}
stop () {
/root/batch/stopSikkimCA.sh
/root/batch/stopSikkimSp.sh
RETVAL=$?
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
start
;;
*)
start
;;
RETVAL=$?
esac
exit $RETVAL
No estoy seguro de si es correcto o no, pero las 2 rutas mencionadas en
iniciar() y detener()
son correctos, pero aún así la aplicación no se inicia al reiniciar la máquina.
Respuesta1
Mira aen esoque es el iniciador de proceso tradicional y ejecuta scripts en /etc/init.d
, /etc/rc1.d
, etc. y /etc/rc.local
, que probablemente sea la ubicación que desea.
Algunas distribuciones utilizanadvenedizoen su lugar, si es así, consulte los documentos para ello.
En cualquier caso, las rutas exactas pueden variar según la distribución, pero esto debería ser suficiente para comenzar.
Respuesta2
Intente comprobar si sus scripts se están iniciando (por ejemplo, pero introduciéndolos touch /var/tmp/startup.script
). ¿Están todos los comandos de sus scripts en el parche de búsqueda durante el arranque?
El nivel de ejecución 2 me parece inusual. 3 debería ser normal para un Linux sin GUI. ¿Qué distribución y versión estás usando?
Respuesta3
En /etc/inittab
busque una línea como id:3:initdefault:
. El número probablemente será 3 o 5, pero podría ser 2 o 4. El número en esa línea es el nivel de ejecución predeterminado. Lo más probable es que no sea 2, por lo que los scripts en rc2.d no se ejecutarán.
Coloque su secuencia de comandos en el directorio rcN.d que coincida con el número de la initdefault
línea.
En principio, rc.local es una mejor opción, pero rc.local varía tanto de una distribución a otra (a veces es un directorio, a veces es un script, a veces no está configurado en absoluto) que sin conocer su distribución es más fácil simplemente ¿Lo has puesto en el nivel de ejecución correcto? Puede intentar man rc.local
ver qué dice eso en su sistema. Si su sistema admite rc.local como directorio, coloque su script allí y no se preocupe por los niveles de ejecución.
Además, asegúrese de que su script sea propiedad de root y tenga permisos 755 (si desea que alguien pueda ejecutarlo) o 744.
Respuesta4
Agregar un script de inicio
Este método funciona con Red Hat, Fedora, Ubuntu (instale el paquete chkconfig y el servicio), Suse.
Debes copiar tu script en /etc/init.d (es el directorio adecuado o un enlace al directorio adecuado para que funcione igual)
sudo cp jBossServers.sh /etc/init.d/
sudo chmod 0755 /etc/init.d/jBossServers.sh
Luego debe agregarlo al proceso de inicio del sistema. En lugar de crear todos los enlaces necesarios, utilice chkconfig (instale el paquete primero en Ubuntu)
sudo chkconfig add jBossServers.sh
Ahora, al leer el script que encabeza este script, ya se tiene la información para chkconfig con respecto a los niveles de ejecución y la prioridad. Entonces estás bien. La próxima vez que reinicie se iniciará JBoos.
Pero podrías intentar empezar ahora mismo.
sudo service jBossServers.sh start
Nota: si su sistema se queja de que no encuentra chkconfig o servicio, intente llamarlo con /sbin/ antes. Ejemplo
sudo /sbin/chkconfig add jBossServers.sh
sudo /sbin/service jBossServers.sh start