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:
- a) o daemon cron deve estar em execução (o que é o caso em circunstâncias normais), e
- 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ê!