Linux Como executar o script python na inicialização

5

Linux Ubuntu 14.04 Tenha um script em ~ / app / serve.py

Precisa executá-lo nesta pasta. No shell eu posso fazer

> cd ~/app && python serve.py

e ele executa um servidor

Precisa executá-lo nos servidores de inicialização em segundo plano. Tentei adicionar este comando cd ~/app && python serve.py ~ em etc / rc.local (e etc / init.d / rc.local) mas ele não inicia.

O que estou fazendo de errado?

    
por WHITECOLOR 11.08.2016 / 00:22

2 respostas

5

Em vez de adicionar cd ~/app && python serve.py em /etc/rc.local, tente colocar o caminho inteiro. Você está esperando que o processo init saiba que ~ é o seu diretório pessoal de alguma forma, mas o init inicia como root. Como o init é iniciado como root, ele procura em / pelo diretório do aplicativo e não pelo diretório inicial. Livre-se do ~ usando o caminho para o seu diretório pessoal.

Tente adicionar /home/whitecolor/app/serve.py a /etc/rc.local . ( pwd para encontrar o diretório do caminho.) Livre-se do python na frente do script serve.py, adicionando #!/usr/bin/python no topo do seu script. (digite um which python para encontrar o caminho, caso não esteja instalado no local normal)

Edit: Você disse "executar em segundo plano" e senti falta disso. Para executar um comando em segundo plano, adicione um & após o comando. Então, para o segundo plano do comando acima: /home/whitecolor/app/serve.py & Init geralmente não precisa do símbolo de fundo para iniciar um trabalho e executá-lo em segundo plano.

A excelente sugestão do DrDR não precisaria do mesmo & de tratamento após o comando na inicialização do cron, já que eles são executados em segundo plano por padrão.

    
por 11.08.2016 / 01:21
4

Eu nunca tive a necessidade de tentar isso, mas, aparentemente, os scripts podem ser executados na inicialização do sistema através do cron, adicionando uma linha semelhante àquela que começa com @reboot abaixo.

#m  h  dom  mon  dow  command
1   *  *    *    *    someHourlyCommand
@reboot               python /home/<username>/app/serve.py

Note que eu mudei o comando um pouco para eliminar o cd'ing no diretório. Sua situação pode ser diferente, então faça o que funciona para você.

    
por 11.08.2016 / 01:18