Execute o script Python na inicialização

5

em execução no Ubuntu Karmic. Eu preciso executar o seguinte script (atualizado) no momento da inicialização

#!/bin/sh
# /etc/init.d/scripts
# Description: Starts Python scripts
# ————————————————–
#
### BEGIN INIT INFO
# Provides: Scripts
# Required-Start: $network $local_fs $syslog
# Required-Stop: $local_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Description: Start Python scripts to provide mapping services
### END INIT INFO

case $1 in
  start)
    # echo -n ¨Starting Mapping service: ¨
/usr/local/bin/liteserv.py /home/myUN/bin/mapnik/my_osm.xml --caching --debug=False
;;
  stop)
# echo -n ¨Stoping Mapping service: ¨
/usr/local/bin/liteserv.py /home/myUN/bin/mapnik/my_osm.xml --caching --debug=False
;;
  restart)
# echo -n ¨Retarting Mapping service: ¨
/usr/local/bin/liteserv.py /home/myUN/bin/mapnik/my_osm.xml --caching --debug=False
;;
  *)
# echo ¨Usage: scripts {start|stop|restart}¨
exit 1
esac

Coloque-o em /etc/init.d Registrado com

sudo update-rc.d scripts defaults

Mas nada acontece na inicialização. Eu tentei procurar nos logs, mas não consigo encontrar nada. Ambos os scripts e liteserv.py estão marcados como executáveis.

De acordo com a resposta de Andy Smith, When I run:

/etc/init.d/scripts start  

Eu agora obtenho o programa rodando corretamente (depois de corrigir as aspas ruins).
No entanto, ainda não executa o programa durante a inicialização.

    
por P Hemans 31.01.2011 / 13:22

4 respostas

6

Isso é bizarro, mas a menos que seja algo que o Stack Exchange esteja fazendo, acho que o problema que você está tendo é que você está usando "aspas extravagantes" em vez de "" .

Qualquer editor que você esteja usando pode ter substituído o caractere de aspas padrão (Unicode U + 0022) com aspas estilizadas de abertura e fechamento (U + 201C e U + 201D). sh não gosta muito disso. Quando substituo essas citações estilizadas por "aspas normais", seu código funciona bem (com a pequena exceção de que não tenho o arquivo .py que ele chama).

    
por 01.02.2011 / 08:25
2

Você pode adicionar suas coisas a /etc/rc.local .

Caso contrário, você pode colocar seu script em /etc/init.d/ , chmod +x e, em seguida, executar update-rc.d FOO defaults .

    
por 31.01.2011 / 16:25
1

Seu script indica que ele deve ser iniciado nos runlevels 3 e 5, parado nos runlevels 1 e 2 (mais 0 e 6 que são shutdown e reboot), e nenhuma opinião no runlevel 4. O Ubuntu inicia no runlevel 2 por padrão ( Eu acho que isso ainda é verdade com o Upstart). Portanto, a menos que você defina um nível de execução padrão diferente, seu script não será executado. Nos cabeçalhos de script, use

# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
    
por 31.01.2011 / 20:57
0

Adicionando:

exec > /tmp/debug-my-script.txt 2>&1  

no começo do arquivo de scripts eu pude pelo menos capturar as mensagens de erro que vinham do programa Python (um erro de autenticação com postgres). Portanto, o script está sendo executado no momento da inicialização (depois de muita entrada na comunidade). Apenas falha durante a execução (o que é um problema diferente).

    
por 02.02.2011 / 04:44