DEV Community

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

Posted on • Edited on

3

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

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay