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

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

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

Está claro para mim que ele pode ser iniciado no nível de inicialização 3, mas não tenho certeza de como exatamente as informações de inicialização devem 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 realmente está 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

Responder1

Seu script não é um init.dscript adequado. Pode haver um arquivo de modelo /etc/init.dque você pode usar para criar seu script inicial. Caso contrário, consulte alguns dos outros scripts para /etc/init.dencontrar o padrão usado pela sua distribuição.

Alternativamente, rc.localgeralmente é executado bem tarde no ciclo de inicialização. Este seria um local apropriado para colocar seu código de inicialização. Verifique o valor de $1is startantes de executar seu código.

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

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

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

Responder2

Especifique $network, assim:

#!/bin/bash                                                          
### BEGIN INIT INFO                                                  
# Provides: mountftp                                                 
# Required-Start: $remote_fs $syslog $network                        
# Required-Stop: $remote_fs $syslog $network                         
# Default-Start: 2 3 4 5                                             
# Default-Stop: 0 1 6                                                
# Short-Description: Mount disk2                                     
# Description: Mount disk2                                           
### END INIT INFO

informação relacionada