Como executar automaticamente scripts na inicialização do SystemD Linux
Dica publicada em Linux / Introdução
Como executar automaticamente scripts na inicialização do SystemD Linux
Aqueles que trabalham com Linux a algum tempo sabem que é essencial executar scripts na inicialização, seja um script de firewall, limpeza de algum diretório, script de backup etc, as possibilidades são infinitas.
As opções configuradas acima são o mínimo que o systemd necessita para executar o script na inicialização do sistema. Para mais informações e opções a serem utilizadas veja systemd.service nas páginas de manual.
# chmod +x /usr/local/bin/disk-space-check.sh
Instale o service unit criado no passo 1 para que ele possa ser executado na inicialização.
# chmod 664 /etc/systemd/system/disk-space-check.service
# systemctl daemon-reload
# systemctl enable disk-space-check.service
Created symlink from /etc/systemd/system/default.target.wants/disk-space-check.service to /etc/systemd/system/disk-space-check.service.
Se você quiser testar o script antes de reinicializar o sistema execute o seguinte comando:
# systemctl start disk-space-check.service
# cat /root/disk_space_report.txt
SYSTEMD SERVICE UNIT
Primeiro crie um script de inicialização systemd chamado "disk-space-check.service" com o conteúdo abaixo e coloque dentro do diretório /etc/systemd/system/:
[Unit]
After=mysql.service
[Service]
ExecStart=/usr/local/bin/disk-space-check.sh
[Install]
WantedBy=default.target
After=mysql.service
[Service]
ExecStart=/usr/local/bin/disk-space-check.sh
[Install]
WantedBy=default.target
- After: instrui o systemd quando o script deverá ser executado. No nosso caso, o script executará depois que o serviço mysql estiver sido inicializado.
- ExecStart: este campo exige o caminho completo até o script a ser executado.
- WantedBy: o alvo de boot ao qual o systemd unit deverá ser instalado.
As opções configuradas acima são o mínimo que o systemd necessita para executar o script na inicialização do sistema. Para mais informações e opções a serem utilizadas veja systemd.service nas páginas de manual.
SCRIPT A SER EXECUTADO
Agora nós criaremos o script para ser executado durante o boot time do systemd. A localização e o nome do script já está definido no service unit criado anteriormente, "/usr/local/bin/disk-space-check.sh". O conteúdo do script é bem simples:
#!/bin/bash
date > /root/disk_space_report.txt
du -sh /home/ >> /root/disk_space_report.txt
date > /root/disk_space_report.txt
du -sh /home/ >> /root/disk_space_report.txt
CONFIGURAÇÃO E INSTALAÇÃO
Antes de dar um reboot no sistema temos que tornar o script executável, digite o seguinte comando:# chmod +x /usr/local/bin/disk-space-check.sh
Instale o service unit criado no passo 1 para que ele possa ser executado na inicialização.
# chmod 664 /etc/systemd/system/disk-space-check.service
# systemctl daemon-reload
# systemctl enable disk-space-check.service
Created symlink from /etc/systemd/system/default.target.wants/disk-space-check.service to /etc/systemd/system/disk-space-check.service.
Se você quiser testar o script antes de reinicializar o sistema execute o seguinte comando:
# systemctl start disk-space-check.service
# cat /root/disk_space_report.txt
Thursday 7 July 11:30:25 AEST 2016 1.5G /home/Tudo pronto. Depois de reinicializar seu sistema Linux, o systemd invocará o shell script criado e executará no boot time.