Linux Como executar o script python na inicialização

Linux Como executar o script python na inicialização

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

Precisa executá-lo nesta pasta. Com casca eu posso fazer

> cd ~/app && python serve.py

e ele executa um servidor

Precisa executá-lo na inicialização dos servidores 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?

Responder1

Em vez de adicionar cd ~/app && python serve.py/etc/rc.local, tente inserir o caminho inteiro. Você espera que o processo init saiba que ~ é o seu diretório inicial de alguma forma, mas o init começa como root. Como o init começa como root, ele procura /o diretório do aplicativo e não o diretório inicial. Livre-se do ~ usando o caminho para o seu diretório inicial.

Tente adicionar /home/whitecolor/app/serve.pyao /etc/rc.local. ( pwdpara encontrar o diretório do seu caminho.) Livre-se pythondo script serve.py adicionando #!/usr/bin/pythonno topo do seu script. (digite a which pythonpara encontrar o caminho caso não esteja instalado no local normal)

Editar: você disse "executar em segundo plano" e eu perdi isso. Para executar um comando em segundo plano, adicione um &após o comando. Portanto, para colocar em segundo plano o 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 &tratamento após o comando na inicialização do cron, pois aqueles são executados em segundo plano por padrão.

Responder2

Nunca tive necessidade de tentar isso, mas aparentemente os scripts podem ser executados na inicialização do sistema via 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

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

informação relacionada