init.d script não está sendo executado na inicialização

14

Estou hospedando alguns servidores de jogos do Counter-Strike no meu servidor dedicado usando a tela. Eu tenho este script que eu executo quando quero iniciar / parar os 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

Eu coloquei este script (chamado css-servers ) em /etc/init.d/ e, até onde sei, significa que ele é executado quando o sistema é inicializado. No entanto, quando verifico as telas ativas usando screen -ls , não há nenhuma em execução.

Como posso executá-los na inicialização no Ubuntu Server?

    
por Mark Twaign 17.07.2012 / 03:57

3 respostas

29

Apenas ter o script presente em /etc/init.d não é suficiente para que ele seja executado na inicialização.

Para adicioná-lo à sua inicialização, você deve informar ao Ubuntu sobre isso:

sudo update-rc.d css-servers defaults

Ele deve então iniciar na próxima inicialização, se o script estiver formatado corretamente, executar o bit executável, etc. Os pacotes que você instalar a partir de apt-get / Software Center executam este comando ou seu equivalente automaticamente, e é por isso que você geralmente tem que se preocupar com isso.

Se você quiser iniciá-lo imediatamente, pode chamá-lo diretamente:

sudo service css-servers start
    
por 17.07.2012 / 04:18
6

Você tem a primeira parte feita. /etc/init.d é onde os scripts de inicialização são executados. No entanto, eles não são executados automaticamente.

Eles são executados na ordem especificada pelos links simbólicos dos diretórios /etc/rc*.d . Cada nível de execução possui seu próprio diretório. Scripts com nomes de links começando com K são executados com o stop pararmeter, e aqueles com nomes começando com S são executados com o parâmetro start. Por convenção, os nomes dos arquivos começam com K ou S seguido por um número de dois dígitos usado para sequenciamento e terminando com o nome do script em /etc/init.d .

Os links podem ser criados manualmente, mas geralmente são criados com um script. O script genérico update-rc.d está disponível no Ubuntu. O comando man update-rc.d fornecerá documentação sobre quem usá-lo. No seu caso, tente:

sudo update-rc.d css-servers defaults

Para iniciá-lo usando o script de inicialização, tente:

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

Geralmente, inicio e paro o servidor dessa maneira para garantir que o script esteja funcionando conforme desejado. Em seguida, corro update-rc.d para adicioná-lo aos diretórios de nível de execução /etc/rc.d .

    
por 17.07.2012 / 04:24
0

Se você não estiver entendendo por que seu serviço não está sendo iniciado na inicialização. No entanto, ele é iniciado perfeitamente bem se tentar iniciá-lo enquanto você tenta manualmente executar o comando service <your service> start . Em seguida, tente redirecionar a saída padrão e a saída de erro para algum arquivo. O que pode lhe dar uma pista de por que não está começando

por exemplo. dentro do seu script

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
    
por 07.12.2015 / 16:21