Script Bash na inicialização? (Linux)


12

Existe alguma maneira de criar / 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, existem guias recomendados para executar tarefas cron? Eu sou completamente novo para eles (mas eles serão de grande utilidade)

Respostas:


21

No Ubuntu / Debian / Centos, você pode configurar um trabalho cron para executar 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, por exemplo

@reboot /path/to/some/script 

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


7

Outra maneira típica de iniciar algo no boot em muitas plataformas * nix é (ou acho que isso pode estar começando a perder o favor - veja alternativas ) colocar scripts em um diretório que, dependendo do sistema operacional / distribuição específico, pode ser algo como /etc/rc2.d, /etc/rc3.d, /etc/rc/rc3.dou similares (distribuições diferentes usam diferentes "níveis de execução", que é onde o número vem - veja o link abaixo). Freqüentemente, eles também são vinculados a arquivos /etc/init.d, a partir de ou para arquivos , para uma execução mais fácil manualmente, e recebem um argumento "start" e / ou "stop" na maioria das plataformas * nix, além de "status", "restart", etc. em muitas plataformas linux. Em tais sistemas, eles geralmente são executados por init,inittab. Nos sistemas * BSD, existe um estilo diferente de um conceito semelhante e, como vinculado acima, há várias 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 Sou Ke, em seguida, com 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, no nível 2, com o argumento "start". Ao desligar, os scripts prefixados com K são executados de maneira semelhante, com o argumento "stop".

Os arquivos /etc/init.d(ou algumas vezes /etc/rc/init.dou outras variações) são nomeados sem os prefixos S e K ou os números numéricos. Normalmente, os arquivos nos vários diretórios /etc/rc?.d vinculam os arquivos reais, geralmente referenciados pelo prefixo do caminho relativo ../init.d/.

Existem vários utilitários em vários sistemas para gerenciá-los, ativando e desativando etc. No IRIX (desde o IRIX 4, se minha memória serve pelo menos), costumava ser uma ferramenta chamada chkconfig, que não manipulava os links, mas que seriam verificados pelos scripts para ver se deveriam 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 ela se comportava de maneira um pouco diferente, na verdade, gerenciando os links simbólicos - veja o chkconfig(8)que eu acho que provavelmente é a mesma (ou muito semelhante) versão como eu usei então.

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

Se você estiver em um sistema que usa o inittab, também pode adicionar coisas diretamente lá - o que pode ser especialmente útil para coisas que você deseja executar não apenas uma vez na inicialização, mas para monitorar ativamente (se init), respawnse alguma vez falhar ou terminar. Veja a saída man inittab(se você a tiver) em seu sistema para obter informações adicionais. E / ou man initetc. Existem muitos sabores diferentes, e atualmente não estou muito familiarizado com o Debian ou o Ubuntu, então não tenho certeza do que apontar, mas espero que isso lhe dê 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 scripts de inicialização como preferíveis para muitas coisas. Mas veja man 5 crontabpara muito mais informações sobre o que você pode colocar na sua configuração do cron, e como isso pode ser dito para executar as coisas, e quando (inclusive, assumindo uma versão do cron do Vixie / ISC [veja o histórico do cron ] com @reboot).

Espero que seja útil.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.