Linux
Como executar um script na inicialização do Ubuntu Linux?
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:
- 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:
- 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:
- 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.
[Unit]
Description=Montando unidade
After=network.target
[Service]
ExecStart=/bin/bash /inicio/inicia.sh
[Install]
WantedBy=multi-user.target
MEU COMANDO do arquivo SH
mount -t ext4 /dev/sda1 /home/hd;
systemctl daemon-reload