Jump to content

Correr script no arranque do sistema operativo


Dr_Lion
 Share

Go to solution Solved by Dr_Lion,

Recommended Posts

Este tópico já tem uns anos, mas aproveitando o mesmo, porque o problema é semelhante.

Tenho um script python que quero correr assim que que o pc se liga, por exemplo quando faz reboot, ou quando ligo depois de ter sido desligado.

A ideia é que o script python corra mesmo que eu não faça login no sistema, ou seja o pc inicia e fica na janela de login.

O que eu fiz foi adicionar á crontab a entrada

@reboot python /var/www/script.py

De notar que o script.py funciona corretamente se eu o executar chamando-o pela consola (tendo o meu utilizador logado), o facto de eu não ter o utilizador logado pode-me estar a criar um problema? é que mesmo depois de eu logar, a entrada não é executada na mesma.

Adicionei a entrada á crontab com o meu utilizador normal "lion".

Alguém me consegue explicar o que me está a falhar?

desde já agradeço toda a ajuda.

Link to comment
Share on other sites

- retira a entrada co crontab

- esquece o crontab

- ignora o crontab

- apaga da cabeça o cronttab

- vai dar uma volta longe do computador para ter a certeza que o crontab já não aparece mais

- cria um ficheiro em /etc/init.d/ com um nome qualquer (desde que ainda não exista no directório)

/etc/init.d/run_me_pretty_please

- escreve na primeira linha do ficheiro

#!/bin/sh

- adiciona ao ficheiro o caminho completo para o local onde se encontra o teu script

- confirma que o ficheiro criado se encontra com permissões de execução

chmod +x /etc/init.d/run_me_pretty_please
  • Vote 2
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Uma dúvida, como é que funciona a questão do utilizador que lança os processos neste caso, é que se eu ainda não estou logado com o meu user (lion) os scripts vão ser lançados sobre que user? :s

Outra coisa, no final da linha onde coloco o caminho para o meu script não preciso de colocar o "&"?

Está-me a falhar qualquer coisa, porque da forma que dizes também não estou a conseguir executar o meu script, já fiz um script bastante simples que apenas escreve um ficheiro com uma frase, tudo no /home/lion/ e também não há sinal do ficheiro escrito. :S

O script que tenho neste directório,

/home/lion/bra.py

não tem permissões de execução, precisa?

estou a usar para o correr no ficheiro no init.d

python /var/www/bra.py

Alguma coisa que me esteja a escapar?

Link to comment
Share on other sites

Se estiveres a usar ubuntu 14, não chega colocar o script no init.d.

Não me sinto completamente seguro para te descrever exactamente o funcionamento da coisa, mas se ainda precisares tens de criar um link simbolico na pasta /etc/rcX.d, onde X é o runlevel a que queres que o script seja corrido.

Alternativamente podes usar o update-rc.d, mas creio que o teu script tem de implementar as regras da LSB.

https://help.ubuntu.com/community/UpstartHowto

Lógicamente o teu script não é executado com o teu user, já que este ainda não está logado. É executado como root.

Quando os teus scripts estão a ser executados, o path não está na tua directoria Home. Usa sempre caminhos absolutos. Precisas também de que o script tenha permissões de execução, para o root pelo menos, mas de preferência para o teu user também (owner), para poderes executar manualmente e verificar se o funcionamento está correcto.

o & no fim da linha serve para correres esse comando em background, libertando assim o script que a invocou para continuar a execução. Normalmente usa-se nos scripts de inicialização de daemons, para que o script não fique pendurado à espera que a aplicação termine.

Infelizmente, no ubuntu os logs estão muito complexos, sendo praticamente impossivel conseguir saber o porquê de falhar a execução do script.

Edited by Flinger
  • Vote 1
Link to comment
Share on other sites

  • Solution

Boas, peço desculpa ter demorado tanto tempo a responder, já consegui por a funcionar usando o crontab, o que parece era apenas um problema de permissões, e caminhos relativos.. Assim que alterei para caminhos absolutos a escrita de ficheiros no script, o problema ficou resolvido. Já não tenho a certeza, mas creio que também alterei as permissões do script.

Desde já agradeço a todos pela ajuda prestada.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.