Executar Script na Inicialização do Sistema com Systemd

Publicado por Thiago Silva em 18/10/2019

[ Hits: 736 ]

 


Executar Script na Inicialização do Sistema com Systemd



O Systemd é um sistema de gerenciamento de serviços (daemons) e não trabalha diretamente com scripts. Esse detalhe pode representar uma dor de cabeça para um usuário típico que simplesmente deseja executar um script ao iniciar o sistema. Nesta dica, mostrarei como criar uma pasta onde basta salvar lá os seus scripts para que estes sejam executados pelo Systemd ao iniciar o sistema.

Primeiro de tudo, deve ser dito que o Systemd não inicia scripts naturalmente. Para contornar isso, precisamos criar um daemon (tecnicamente não será isso de verdade, o Systemd só precisa pensar que é). Esse arquivo é uma unit. Você pode pesquisar sobre a sintaxe desse tipo de arquivo em outro momento, mas ele é inspirado nos arquivos ".desktop" da XDG Desktop Entry Specification.

Você pode fazer a seguinte analogia: para adicionar um programa ao menu do Gnome, por exemplo, você precisa de um arquivo ".desktop" que explique para o sistema onde está o executável, o ícone etc. Esse arquivo deve estar em um local específico. Da mesma forma, precisamos criar a nossa unit em um lugar onde o Systemd o ache.

Execute:

# nano /etc/systemd/system/initscr.service

O diretório /etc/systemd/system é o local normal para que o administrador do sistema crie as suas units, mas não é o único local possível. O código acima cria o arquivo "initscr.service" e o edita com o nano. Use outro editor de texto se preferir.

Agora vamos adicionar o conteúdo desse arquivo:

[Unit]
Description=ScriptInit

[Service]
Type=simple
RemainAfterExit=yes
ExecStart=/opt/initScripts/init.sh start
ExecStop=/opt/initScripts/init.sh stop
ExecReload=/opt/initScripts/init.sh restart

[Install]
WantedBy=multi-user.target

Note que esse é um modelo básico de unit. Você não precisa fazer nada aqui: eu a escrevi de modo a executar um script que ainda não existe, consegue ver? Estou falando da linha "ExecStart=/opt/initScripts/init.sh start". Agora você deve criar uma pasta (pode ser como usuário normal) em /opt com o nome "initScripts".

Dentro da pasta, execute:

# nano init.sh

E insira um simples script:

#!/bin/bash
cd /opt/initScripts/scr
for i in *;
do
        ./$i
done

Salve e feche o arquivo. Agora damos permissão de execução para ele:

# chmod +x init.sh

Crie uma pasta dentro de "initScripts" com o nome "scr". Nesta pasta (scr) coloque os scripts que deseja iniciar automaticamente. Se quiser, você pode criar um link simbólico em algum lugar prático para facilitar o acesso a essa pasta que será o coração do nosso sistema.

Agora, basta atualizar a lista de units e habilitar a nova que adicionamos:

# systemctl daemon-reload
# systemctl enable initscr

Está feito! Agora todos os scripts que você adicionar em /opt/initScripts/scr serão executados automaticamente junto com o sistema. É claro que você não precisa trabalhar em /opt, ou com a estrutura que eu trouxe aqui, se você entendeu a lógica, pode ficar à vontade para fazer como lhe for cômodo, mas em geral para um usuário típico (como eu) isso deve servir.

No meu caso, criei um link simbólico da pasta "scr" na minha pasta principal com o nome Scripts, então basta copiar e colar quando preciso iniciar algo.

Não se esqueça que desse modo, os scripts são executados como root.

Outras dicas deste autor

Remover pedido de senha para Chaveiro de Sessão

Spotify no Arch Linux

Instalação do OpenOffice no Arch Linux

Dash to Dock no Gnome 3.34

Leitura recomendada

Lendo DVD protegido no Linux

Android + Gmail + Thunderbird = Gerenciamento Integrado de Contatos

Criando um disquete gerenciador de boot com o Slackware a partir do Windows

Instalando o KDE 4.2 no Slackware Linux 12.2

slackpkg dando erro: /usr/libexec/slackpkg/core-functions.sh: line 10: tput: command not found

  

Comentários
[1] Comentário enviado por albfneto em 18/10/2019 - 20:24h

conheço isso, já usei,
mas para lembrar caso eu precise, favoritei sua Dica.

¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨¨
Albfneto,
Ribeirão Preto, S.P., Brasil.
Usuário Linux, Linux Counter: #479903.
Distros Favoritas: [i] Sabayon, Gentoo, OpenSUSE, Mageia e OpenMandriva[/i].

[2] Comentário enviado por Ryuk em 19/10/2019 - 17:37h

Interessante.
Boa dica.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts