A inclusão de um script na inicializa é necessário que sejam seguidos alguns passos conforme a seguir.
1. Criação do script
Embora o systemd seja o responsável pela inicialização do Linux, ele não inicializa scripts naturalmente, logo o script propriamente dito ainda é necessário.Crie o script para executar a ação desejada e salve no diretório que desejar. Como exemplo, será utilizado o script vpn_manager.sh salvo em /usr/local/sbin, pois facilita a posterior utilização.
2. Definir o momento da execução.
O systemd executa as units (seus scripts) de acordo com o nível de execução definido no script. Assim, para informar quando deve ocorrer a execução, é necessário informar após qual processo ela deve ocorrer.systemd-analyze plot > systemd.svgO comando acima gera um relatório com todas as inicializações, sequência e tempo de inicialização individual, resultando em uma “imagem” com um gráfico. Para conseguir visualiza-la pode-se utilizar um navegador como Chrome, Chromium ou Firefox. Ou então algum programa de imagem ImageMagick, gimp, inkscape, etc.
3. Criando um serviço no daemon
Criar um arquivo com a nomenclatura [vpn_manager].service em /lib/systemd/system/, incluindo o conteúdo a seguir:[Unit]Outras configurações pode ser realizadas, incluindo opções de start, status e stop. Mais informações podem ser encontradas nesse link ou nas referências.
# Descricao do que sera executado
Description=gerenciamento de vpn
# Esta unit sera executada apos o servico definido
After=network.service openvpn.service
[Service]
# Tipo de inicialização
Type=simple
# Para que o systema considere o servico como ativo após executado
#RemainAfterExit=yes
# Este campo exige o caminho completo até o script a ser executado
ExecStart=/usr/local/sbin/vpn_manager.sh
[Install]
# Serviço valido para o runlevel multi-user.targe
WantedBy=multi-user.target
4. Efetivando a configuração
chmod +x /usr/local/sbin/vpn_manager.shA primeira linha da permissão de execução para o script, caso ainda não tenha sido feito. A segunda habilita o service, a terceira recarrega ao daemon e a última reinicia o sistema para testar a configuração. Sempre que forem realizadas alterações no daemon, o mesmo deve ser recarregado.
systemctl enable /lib/systemd/system/vpn_manager.service
systemctl daemon-reload
reboot
Referências
- https://www.vivaolinux.com.br/dica/Executar-Script-na-Inicializacao-do-Sistema-com-Systemd
- https://e-tinet.com/linux/systemd/
- http://fredaugusto.com.br/2019/09/30/usando-o-systemd-para-iniciar-seu-script-automaticamente-no-debian/
- https://www.vivaolinux.com.br/dica/Como-executar-automaticamente-scripts-na-inicializacao-do-SystemD-Linux
- https://e-tinet.com/linux/systemd-runlevels/
- https://blogdocardoso.com/raspbian-utilizando-o-systemd-para-executar-scripts-durante-a-inicializacao/
- https://wiki.archlinux.org/index.php/Systemd_(Portugu%C3%AAs)