Ir ao topo

Tecnobyte

Logomarca da Tecnobyte
Contato por WhatsApp

WhatsApp

(69) 3421-6756

Contato por Telefone

(69) 3421-6756

(69) 3421-6757

Enviar mensagem

Enviar

mensagem

Contato por Facebook

Facebook

Atendimento de segunda a sexta, das 08h00 às 19h00 (horário de Brasília).

Linux

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

Banner

Os passos abaixo mostra como configurar um serviço no systemd para executar um script ao iniciar o Linux, quando uma conexão de rede já estiver disponível.

  • Crie um diretório para testes:
    sudo mkdir /diretorio
  • 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 /diretorio/meu-script.sh
  • 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
    
  • 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 /diretorio/meu-script.sh
  • Execute o script para testar:
    sudo /diretorio/meu-script.sh
  • Confira o conteúdo do arquivo criado:
    cat /diretorio/teste.txt
  • 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
  • Adicione o conteúdo abaixo nesse arquivo de unidade do systemd:
    [Unit]
    Description=Meu script para testes
    Wants=network-online.target
    After=network.target
    
    [Service]
    ExecStart=/bin/bash /diretorio/meu-script.sh
    
    [Install]
    WantedBy=multi-user.target
    
  • 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
  • Teste o serviço recém configurado:
    sudo systemctl start meu-script
  • Cada vez que iniciar o serviço, uma nova linha será adicionada ao arquivo teste.txt. Use este comando para conferir:
    sudo cat /diretorio/teste.txt
  • Habilite o novo serviço para iniciar junto com o sistema:
    sudo systemctl enable meu-script
  • Reinicie o sistema algumas vezes para testar:
    sudo shutdown -r now
  • E confira o resultado novamente:
    sudo cat /diretorio/teste.txt

Observações:

  • A configuração After=network.target informa ao systemd para executar o serviço após iniciar o serviço de rede.
  • A configuração Wants=network-online.target informa ao systemd que nosso serviço necessita do serviço de rede online, ou seja, requer conexão de rede disponível.
  • A configuração WantedBy=multi-user.target informa ao systemd que nosso serviço é requerido para o nível de execução multi-user.target.
  • Testado no Ubuntu Linux 20.04 LTS, mas deve funcionar em outras distribuições e versões que usem o systemd.

O conteúdo desta página pode ajudar alguém? Compartilhe!