He creado un script para iniciar un servidor (mi primera pregunta). Ahora quiero que se ejecute en el arranque del sistema e inicie el servidor definido. ¿Qué debo hacer para hacer esto?
Mis hallazgos me dicen que coloque este archivo en la /etc/init.dubicación y se ejecutará cuando se inicie el sistema. ¿Pero no puedo entender cómo será el primer argumento sobre el inicio start? ¿Está esto predefinido en algún lugar para usar startcomo $1? Si quiero tener un caso startallque inicie todos los servidores en el script, ¿cuáles son las opciones que puedo administrar?
Mi guión es así:
#!/bin/bash
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
$0 stop
$0 start
;;
*)
echo "usage: $0 (start|stop|restart)"
;;
esac
linux
shell-script
centos-5
vijay.shad
fuente
fuente

Respuestas:
/etc/init.des el directorio de script, en el que aparecen los scripts ejecutables. Sin embargo, para ejecutar secuencias de comandos en un orden particular después de que se inicie su sistema, debe agregar archivos al/etc/rc#.ddirectorio. Las entradas que aparecen aquí le indican a su sistema en qué orden y en qué nivel de ejecución/etc/init.ddeben ejecutarse los scripts . El número después del rc indica en qué nivel de ejecución está funcionando la máquina, de acuerdo con este gráfico:http://en.wikipedia.org/wiki/Runlevel
Entonces si tienes:
Entonces necesitas los archivos (vacíos):
La S significa comenzar, y la K significa matar. Cuando su máquina se inicia, el sistema dirá "Ah, estoy ejecutando en RunLevel 3, pasemos a rc3.d para ver qué scripts en '/etc/init.d' necesitan ejecutarse y en qué orden". En este caso, el sistema ordenará por 'S' y luego el número después de 'S' y ejecutará '/etc/init.d/importantscript start'. El 20 es solo para fines de pedido ... su script se ejecutará detrás de 'S19' y delante de 'S21'. Puede crear estos archivos simplemente haciendo:
sudo touch /etc/rc.d/rc3.d/S20importantscriptAquí también hay un buen resumen: http://www.linux.com/news/enterprise/systems-management/8116-an-introduction-to-services-runlevels-and-rcd-scripts
fuente
No tiene que --- y no debería --- crear archivos en
/etc/rc.d/rcN.d/; lo que debes hacer es poner un comentario en la lectura de tu script de iniciodonde
NNNes el conjunto de los niveles de ejecución en el que se desea que el script activo (por ejemplo,345si es activo en los niveles de ejecución3,4y5), yAyBson las prioridades de inicio y parada. Luegochkconfig --add foo(suponiendo que su script tenga nombrefoo) creará los archivos/etc/rc.d/rcN.d/con los nombres apropiados.A continuación, puede utilizar
service foo barpara enviar elbarmensaje a la secuencia de comandos (por ejemplo,start,stop, lo que sea - que es donde el$1viene).fuente
El $ 1 es el argumento de la línea de comando que se pasa a su script, es uno de inicio, detención o reinicio. En openSUSE , no recuerdo tener una opción para pasar otros argumentos al script al usar el editor de nivel de ejecución, así que creo que estos son probablemente los únicos que debería usar.
Yo no uso CentOS , pero parece que el programa controla lo que se inicia en qué nivel de ejecución es ntsysv .
fuente