El script init.d no se ejecuta al inicio

15

Estoy alojando algunos servidores de juegos Counter-Strike en mi servidor dedicado usando la pantalla. Tengo este script que ejecuto cuando quiero iniciar / detener los servidores:

#! /bin/sh
# /etc/init.d/css-server
#

case "$1" in
  start)
    echo "Starting Nullus Imprimis war server..."
    screen -A -m -d -S css-war-server /home/css-servers/war-server/css/srcds_run -game cstrike +map de_dust2 +maxplayers 16 -autoupdate -port 2555 -tick 100 
    echo "Nullus Imprimis war server started"
    echo "Starting Nullus Imprimis pub server #1..."
    screen -A -m -d -S css-pub-server-1 /home/css-servers/pub-server-1/css/srcds_run -game cstrike +map de_dust2 +maxplayers 32 -autoupdate -port 2666 -tickrate 100
    echo "Nullus Imprimis pub server #1 started"
    ;;
  stop)
    echo "Stopping Nullus Imprimis war server..."
    screen -S css-war-server -X quit
    echo "Nullus Imprimis war server stopped"
    echo "Stopping Nullus Imprimis pub server #1..."
    screen -S css-pub-server-1 -X quit
    echo "Nullus Imprimis pub server #1 stopped"
    ;;
  *)
    echo "Usage: /etc/init.d/css-servers {start|stop}"
    exit 1
    ;;
esac

exit 0

Puse este script (llamado css-servers) en /etc/init.d/mi conocimiento, lo que significa que se ejecuta cuando se inicia el sistema. Sin embargo, cuando verifico las pantallas activas usando screen -lsno hay ninguna en ejecución.

¿Cómo puedo hacer que estos se ejecuten al inicio en Ubuntu Server?

Mark Twaign
fuente

Respuestas:

33

Solo tener el script presente /etc/init.dno es suficiente para que se ejecute al inicio.

Para agregarlo a su inicio, debe informarle a Ubuntu al respecto:

sudo update-rc.d css-servers defaults

Luego debería comenzar en el próximo arranque, si el script está formateado correctamente, conjunto de bits ejecutable, etc. Los paquetes que instale desde apt-get/ Software Center ejecutan este comando o su equivalente automáticamente, por lo que generalmente no tiene que preocuparse al respecto

Si desea iniciarlo de inmediato, puede llamarlo directamente:

sudo service css-servers start
Michael Hampton
fuente
Esto es extremadamente extraño. Hasta este punto, mi script se ejecuta al inicio sin este update-rc.dcomando. Actualicé mi script y luego no se ejecutó más hasta que ejecuté este comando. Gracias. Por cierto, ¿cómo podemos "desregistrarlo" para que no se ejecute al inicio (como hicimos con update-rc.d)?
Nikos
1
@ Nik-Lz Estas preguntas y respuestas se refieren a versiones antiguas y obsoletas de Ubuntu que se utilizaron en el inicio. Ya no debería usarse, en su lugar debería usarse el systemd actual (que usa un sistema de servicio completamente diferente).
Michael Hampton
7

Tienes la primera parte hecha. /etc/init.des donde se ejecutan los scripts de inicialización. Sin embargo, no se ejecutan automáticamente.

Se ejecutan en el orden especificado por los enlaces simbólicos de los /etc/rc*.ddirectorios. Cada nivel de ejecución tiene su propio directorio. Los scripts con nombres de enlaces que comienzan con Kse ejecutan con el stop stopmeter, y aquellos con nombres que comienzan con Sse ejecutan con el parámetro de inicio. Por convención, los nombres de los archivos comienzan con Ko Sseguido de un número de dos dígitos utilizado para la secuencia, y termina con el nombre del script en /etc/init.d.

Los enlaces se pueden crear manualmente, pero generalmente se crean con un script. El script genérico update-rc.destá disponible en Ubuntu. El comando man update-rc.dle dará documentación sobre quién usarlo. En su caso intente:

sudo update-rc.d css-servers defaults

Para iniciarlo usando el script de inicio, intente:

sudo /etc/init.d/css-servers start

Por lo general, inicio y detengo el servidor de esta manera para asegurarme de que el script funciona como se desea. Luego corro update-rc.dpara agregarlo a los /etc/rc.ddirectorios de nivel de ejecución.

BillThor
fuente
1

Si no tiene idea de por qué su servicio no se inicia en el arranque. Sin embargo, funciona correctamente cuando intenta iniciar el servicio manualmente service <your service> start. En ese caso, intente redirigir la salida estándar y la salida de error a algún archivo. Lo que puede darle alguna pista de por qué no se inicia al iniciar el sistema.

por ejemplo, dentro de tu guión

case "$1" in
  start)
    echo "Starting Service "
    <your command to start the service > /tmp/bootservice.log 2>&1
    ;;
  stop)
    echo "Stopping Service "
    <your command to start the service > /tmp/bootservice.log 2>&1
    ;;
  *)
    echo "Usage: /etc/init.d/test {start|stop}"
    exit 1
    ;;
esac

exit 0
Pandurang Patil
fuente