Como faço para que um script python (incluindo suas dependências) seja executado na inicialização de uma máquina Ubuntu?

1

Bem, eu sei que para um único script a questão é apenas colocar o arquivo correspondente no diretório /etc/rc.local , certo? Mas, e se esse script depender de outros arquivos (por exemplo, alguns scripts e alguns arquivos de texto)? O que devo fazer para evitar que essa determinada pasta seja uma bagunça?

    
por user88349 25.10.2012 / 02:03

2 respostas

2

Se por depende , você quer dizer que usa e / ou chama , que não deve importar . Você pode simplesmente adicionar uma linha ao final do arquivo rc.local como um comando para chamar o script principal e deve apenas funcionar .

Existe uma alternativa para rc.local , pelo menos nas versões para computador. Você pode usar o aplicativo Startup Applications para adicionar seu script a ele. A diferença entre os dois métodos, além da versão da adição CLI vs GUI, é que os scripts rc.local são executados como ROOT e os aplicativos de inicialização como seu usuário

Editar

Nos comentários, seu problema se torna mais claro . Parece que o script está usando caminhos relativos para acessar a dependência, o que eu acho que não é código. O diretório de trabalho dos dois métodos acima é /root/ ou /home/<user name/ , portanto, as dependências não são carregadas .

A correção mais fácil é cd para a pasta antes de invocar o script python. Qualquer um desses deve funcionar: - Use cd /home/..../.../ && python perdc_task.py como o comando em um desses dois métodos. - Se isso não funcionar, crie um script ( .sh deve fazer) que chama o comando acima e chame este script nos dois métodos acima.

A maneira mais elegante de fazer isso é - Faça o cd de dentro do script python determinando seu caminho programaticamente - Ou use o caminho acima para acessar as dependências por caminho absoluto

Editar2

O Ubuntu pode ter se afastado do rc.local em favor do upstart . Tente ver se está usando upstart como em esta pergunta funciona para você.

    
por 25.10.2012 / 03:24
1

Se você tem cron habilitado (o que você deve), há um comando especial @reboot que é executado na inicialização. Eu não tenho certeza se isso funciona em botas frias, mas pelo que eu posso ver isso acontece.

Se funcionar, basta escrever um script, ploncá-lo em algum diretório limpo e organizado e chamá-lo por cron .

Veja: Aqui e Aqui

    
por 25.10.2012 / 03:33