Bash Script na inicialização? (Linux)

12

Existe alguma maneira de fazer / executar um script bash na reinicialização (como no Debian / Ubuntu por exemplo, já que são as minhas 2 caixas em casa)

Além disso, algum guia recomendado para fazer trabalhos agendados? Eu sou completamente novo para eles (mas eles serão de grande utilidade)

    
por msmith1114 21.02.2011 / 21:31

2 respostas

20

No Ubuntu / Debian / Centos você pode configurar um cron job para rodar o @reboot. Isso é executado uma vez na inicialização do sistema. Use crontab -e para editar o crontab e adicione uma linha como o exemplo abaixo

@reboot /path/to/some/script 

Existem muitos recursos para o cron se você procurar por eles. Este site tem vários bons exemplos.

    
por 21.02.2011 / 21:39
8

Outra maneira típica de iniciar algo na inicialização em muitos * nix é (ou foi, eu acho que isso pode estar começando a perder o favor - veja alternatives ) para colocar scripts em um diretório que, dependendo do OS / distribuição em particular, pode ser algo como /etc/rc2.d , /etc/rc3.d , /etc/rc/rc3.d ou similares (diferentes distribuições usam diferentes "níveis de execução", que é de onde vem o número - veja o link abaixo). Freqüentemente, estes também são ligados simbolicamente em ou em arquivos de /etc/init.d , para uma execução mais fácil à mão, e recebem um argumento "start" e / ou "stop" na maioria das plataformas * nix, e também "status", " reiniciar ", etc. em muitas plataformas linux. Em tais sistemas, eles geralmente são executados por init , via inittab - consulte scripts de init do SysV . Em sistemas * BSD, há um estilo diferente de um conceito similar e, como mencionado acima, há um monte de variações.

No estilo acima, os scripts em, por exemplo, /etc/rc2.d (para um sistema com um nível de execução padrão 2) geralmente começam com a letra S ou K e, em seguida, um número de dois dígitos. Os scripts que começam com S são executados em ordem lexicográfica (que geralmente se traduz em ordem numérica) ao inicializar, em nível 2, com um argumento de "start". Ao desligar, os scripts prefixados com K são executados de forma semelhante, com um argumento de "stop".

Os arquivos em /etc/init.d (ou às vezes /etc/rc/init.d ou outras variações) são nomeados sem os prefixos S e K ou os números numéricos. Tipicamente, os arquivos nos vários diretórios /etc/rc?.d ligam aos arquivos reais, freqüentemente referenciados através do prefixo de caminho relativo ../init.d/ .

Vários utilitários existem em vários sistemas para gerenciá-los, assim como ligar e desligar, etc. No IRIX (desde o IRIX 4, pelo menos, se minha memória servir), costumava ser uma ferramenta chamada chkconfig , que não iria manipular os links, mas que seria verificado pelos scripts para ver se eles devem ser executados ou não. Eu acho que o IRIX foi o primeiro sistema operacional a ter algo assim. Mais tarde, em alguma versão do RedHat que eu costumava ter, havia uma ferramenta com o mesmo nome, mas se comportava de maneira um pouco diferente, na verdade gerenciando os links simbólicos - veja chkconfig(8) para o que eu acho que é provavelmente a mesma versão (ou muito similar) que usei então.

Em um sistema Ubuntu 9.04 que eu tenho acesso, parece que update-rc.d é o script a ser executado.

Se você estiver em um sistema que usa inittab, você também pode adicionar coisas diretamente lá - o que pode ser especialmente útil para coisas que você quer executar não apenas uma vez na inicialização, mas para ter ativamente monitorado (por init ) para respawn se eles falharem ou terminarem. Veja a saída de man inittab (se você tiver) no seu sistema para obter informações adicionais. E / ou man init , etc. Existem muitos sabores diferentes, e eu não estou (atualmente) muito familiarizado com o Debian ou o Ubuntu, então eu não tenho certeza exatamente do que você deve apontar, mas espero que isso dê a você alguns pontos de partida.

a seção @reboot no crontob é nova para mim, mas também parece ser uma opção útil - embora eu sugira que os scripts init sejam preferíveis para muitas coisas. Mas veja man 5 crontab para muito mais informações sobre o que você pode colocar em sua configuração do cron, e como ele pode ser dito para executar coisas, e quando (incluindo, assumindo uma versão Vixie / ISC do cron [ver cron history ] com @reboot ).

Espero que isso seja útil.

    
por 22.02.2011 / 12:12