init.d como iniciar um serviço no init.d quando a rede funciona totalmente?

1

Eu tenho um script python que expõe um serviço RESTful (usando a estrutura do flask). O que eu gostaria de fazer com este serviço é que ele clona a versão mais recente do script python, e então ele inicia o main.py.

É claro para mim que pode ser iniciado no nível 3 do init, mas eu não tenho certeza de como exatamente as informações do init precisam ser configuradas e também não tenho certeza se não há problema em atualizar o crontab com

sudo update-rc.d myservice enable 3

o que está realmente no script myservice é algo como:

#!/bin/sh
rm -fR /home/pi/myservicedir
git clone https://repo/code.git /home/pi/myservicedir
cd /home/pi/myservicedir
python main.py
    
por ThomasMX 11.06.2016 / 12:23

1 resposta

0

Seu script não é um script init.d adequado. Pode haver um arquivo de modelo em /etc/init.d que você pode usar para criar seu script de início. Caso contrário, observe alguns dos outros scripts em /etc/init.d para encontrar o padrão usado por sua distribuição.

Como alternativa, rc.local geralmente é executado muito tarde no ciclo de inicialização. Este seria um local apropriado para colocar seu código de inicialização. Verifique o valor de $1 é start antes de executar seu código.

Os servidores são iniciados na ordem listada em /etc/rc3.d . Os scripts de eliminação que iniciam K são executados primeiro em ordem lexical e, em seguida, os scripts de início que iniciam S são executados em ordem lexical. Se você quiser ter certeza de que tudo está em execução, use uma ordem de início de 99 .

Sua distribuição deve ter um método para instalar e remover links nos diretórios rc#.d . No seu caso, parece ser update-rc.d . Isso geralmente é controlado por linhas de comentário na parte superior do script init.d .

Deve haver man páginas descrevendo os programas e arquivos de que você precisa. Tente executar man update-rc.d e man -k init .

    
por 11.06.2016 / 17:15