Pesquisa de site

Como executar comandos/scripts automaticamente durante a reinicialização ou inicialização


Sempre fico fascinado com o que acontece nos bastidores quando inicializo um sistema Linux e faço logon. Ao pressionar o botão liga/desliga em um bare metal ou iniciar uma máquina virtual, você aciona uma série de eventos que levam a um sistema totalmente funcional – às vezes em menos de um minuto. O mesmo acontece quando você faz logoff e/ou desliga o sistema.

O que torna isso mais interessante e divertido é o fato de que você pode fazer com que o sistema operacional execute determinadas ações ao inicializar e ao fazer login ou logout.

Neste artigo independente de distro, discutiremos os métodos tradicionais para atingir esses objetivos no Linux.

Nota: Assumiremos o uso do Bash como shell principal para eventos de logon e logout. Se acontecer de você usar um diferente, alguns desses métodos podem ou não funcionar. Em caso de dúvida, consulte a documentação do seu shell.

Executando scripts Linux durante a reinicialização ou inicialização

Existem dois métodos tradicionais para executar um comando ou scripts durante a inicialização:

Método #1 – Use um cron Job

Além do formato usual (minuto/hora/dia do mês/mês/dia da semana) que é amplamente utilizado para indicar uma programação, o agendador cron também permite o uso de @reboot. Esta diretiva, seguida pelo caminho absoluto para o script, fará com que ele seja executado quando a máquina for inicializada.

No entanto, existem duas ressalvas nesta abordagem:

  1. a) o daemon cron deve estar em execução (o que é o caso em circunstâncias normais), e
  2. b) o script ou arquivo crontab deve incluir as variáveis de ambiente (se houver) que serão necessárias (consulte este tópico do StackOverflow para obter mais detalhes).

Método #2 – Use /etc/rc.d/rc.local

Este método é válido mesmo para distribuições baseadas em systemd. Para que este método funcione, você deve conceder permissões de execução a /etc/rc.d/rc.local da seguinte forma:

chmod +x /etc/rc.d/rc.local

e adicione seu script na parte inferior do arquivo.

A imagem a seguir mostra como executar dois scripts de amostra (/home/gacanepa/script1.sh e /home/gacanepa/script2.sh) usando um cron< job e rc.local, respectivamente, e seus respectivos resultados.

#!/bin/bash
DATE=$(date +'%F %H:%M:%S')
DIR=/home/gacanepa
echo "Current date and time: $DATE" > $DIR/file1.txt
#!/bin/bash
SITE="linux-console.net"
DIR=/home/gacanepa
echo "$SITE rocks... add us to your bookmarks." > $DIR/file2.txt

Lembre-se de que ambos os scripts devem receber permissões de execução anteriormente:

chmod +x /home/gacanepa/script1.sh
chmod +x /home/gacanepa/script2.sh

Executando scripts Linux no logon e logout

Para executar um script no logon ou logout, use ~.bash_profile e ~.bash_logout, respectivamente. Provavelmente, você precisará criar o último arquivo manualmente. Basta soltar uma linha invocando seu script na parte inferior de cada arquivo da mesma maneira que antes e você estará pronto para começar.

Resumo

Neste artigo, explicamos como executar o script na reinicialização, logon e logout. Se você puder pensar em outros métodos que poderíamos ter incluído aqui, sinta-se à vontade para usar o formulário de comentários abaixo para indicá-los. Estamos ansiosos para ouvir de você!