DEV Community

Cover image for Como executar um script na inicialização do Ubuntu Linux
Samuel Starts
Samuel Starts

Posted on • Edited on

Como executar um script na inicialização do Ubuntu Linux

Os passos a seguir mostram como configurar um serviço no systemd para executar um script automaticamente ao iniciar o Linux, após uma conexão de rede estar disponível. Quando o sistema é iniciado ou reiniciado, o script será executado como root. Por isso, é importante testar seus códigos manualmente antes, para evitar problemas durante o reboot. Dependendo da sua necessidade, instale as dependências como root ou especifique o caminho completo dos diretórios, como o do Java, Node.js, ou qualquer outro que for utilizar.

Estou supondo que nosso script esta dentro da pasta scripts

/home/ubuntu/scripts/
Enter fullscreen mode Exit fullscreen mode

Agora crie um arquivo de script com nome meu-script.sh, ou outro nome de sua escolha, no diretório criado no passo anterior.

sudo nano /home/ubuntu/scripts/meu-script.sh
Enter fullscreen mode Exit fullscreen mode

Adicione a esse arquivo os comandos para serem executados. Neste exemplo vamos apenas gravar a data e hora do sistema e uma mensagem em um arquivo no diretório de testes.

arquivo="/diretorio/teste.txt"
dataHora=$(date "+%d/%m/%Y %H:%M:%S")
texto="$dataHora - Script executado!"
echo $texto >> $arquivo
Enter fullscreen mode Exit fullscreen mode

Salve o arquivo (CTRL+O).
Feche o editor de texto (CTRL+X).

Altere as permissões do script para torná-lo executável:

sudo chmod +x /home/ubuntu/scripts/meu-script.sh
Enter fullscreen mode Exit fullscreen mode

Execute o script para testar:

sudo /home/ubuntu/scripts/meu-script.sh
Enter fullscreen mode Exit fullscreen mode

Confira o conteúdo do arquivo criado:

 cat /home/ubuntu/scripts/teste.txt
Enter fullscreen mode Exit fullscreen mode

Crie um arquivo de unidade do systemd para configurar o meu-script.sh como um serviço:

sudo nano /lib/systemd/system/meu-script.service
Enter fullscreen mode Exit fullscreen mode

Adicione o conteúdo abaixo nesse arquivo de unidade do systemd:

[Unit]
Description=Start Server
Wants=network-online.target
After=network.target

[Service]
# Executa o serviço como o usuário 'user'
# Porem suas pendencia devem estar instaladas em root tambem
User=user


# Diretório de trabalho, onde o script será executado
WorkingDirectory=/home/starts/scripts

# Comando para iniciar o serviço (caminho completo para o script)
ExecStart=/bin/bash /diretorio/meu-script.sh

RemainAfterExit=yes
StandardOutput=journal
StandardError=journal
Enter fullscreen mode Exit fullscreen mode

Image description

Salve o arquivo (CTRL+O).
Feche o editor de texto (CTRL+X).

Execute o comando abaixo agora e sempre que modificar o arquivo de unidade do systemd:

sudo systemctl daemon-reload
Enter fullscreen mode Exit fullscreen mode

Teste o serviço recém configurado:

sudo systemctl start meu-script
Enter fullscreen mode Exit fullscreen mode

Cada vez que iniciar o serviço, uma nova linha será adicionada ao arquivo teste.txt. Use este comando para conferir:

sudo cat /home/ubuntu/scripts/teste.txt
Enter fullscreen mode Exit fullscreen mode

Habilite o novo serviço para iniciar junto com o sistema:

sudo systemctl enable meu-script
Enter fullscreen mode Exit fullscreen mode

Reinicie o sistema algumas vezes para testar:

sudo shutdown -r now
Enter fullscreen mode Exit fullscreen mode

E confira o resultado novamente:

sudo cat /home/ubuntu/scripts/teste.txt
Enter fullscreen mode Exit fullscreen mode

Testado no Ubuntu Linux 20.04 LTS

Caso queira ver um log no journal do linux vocêpode usar:

sudo journalctl -u meu-script
Enter fullscreen mode Exit fullscreen mode

Image description

Caso queira ver o status você pode usar:

sudo systemctl status meu-script.service
Enter fullscreen mode Exit fullscreen mode

Links Uteis
mistarts.com.br
Meu GitHub

Top comments (0)