O systemd é um sistema de inicialização (init system) e gerenciamento de serviços usado em várias distribuições Linux. Ele é responsável por iniciar, gerenciar e parar serviços e outros processos no sistema operacional, controlando todo o ciclo de vida desses componentes desde a inicialização até o desligamento.

Aqui estão alguns pontos-chave sobre o systemd:

  1. Inicia serviços: O systemd substitui o tradicional sistema init (como o SysVinit) e inicia serviços de forma paralela, o que torna a inicialização mais rápida.

  2. Unidades (units): O systemd organiza e controla processos usando arquivos chamados “unidades” (units). Existem vários tipos de unidades, como:

    • Serviço (service): Para gerenciar serviços da web, banco de dados, entre outros.
    • Socket: Para serviços baseados em rede ou comunicação entre processos.
    • Montagem (mount): Para pontos de montagem de sistemas de arquivos.
    • Alvo (target): Conjuntos de unidades usadas para agrupar diferentes estados, como iniciar todos os serviços de rede ou parar tudo durante o desligamento.
  3. Controle de dependências: O systemd é capaz de controlar a ordem em que os serviços são iniciados, garantindo que dependências entre serviços sejam resolvidas corretamente (por exemplo, garantir que o serviço de rede seja iniciado antes do serviço que depende da conexão de rede).

  4. Facilidade de gerenciamento: Com comandos como systemctl, o systemd permite que você inicie, pare, habilite ou desabilite serviços facilmente.

  5. Journald: O systemd inclui um sistema de registro de logs chamado journald, que coleta e organiza logs de todo o sistema, facilitando a análise e solução de problemas.

Exemplo de uso do systemctl:

  • Para iniciar um serviço:
sudo systemctl start nome_do_servico
  • Para habilitar um serviço para inicialização automática:
sudo systemctl enable nome_do_servico

Configuração

Passo 1: Crie um Script

Primeiro, crie o script shell que você quer executar na inicialização.

  1. Crie o script:
sudo nano /usr/local/bin/meuscriptdeinicializacao.sh
  1. Adicione os comandos ao script. Por exemplo:
#!/bin/bash
echo "Instância EC2 iniciada!" >> /var/log/inicializacao.log
  1. Torne o script executável:
sudo chmod +x /usr/local/bin/meuscriptdeinicializacao.sh

Passo 2: Crie um Serviço systemd

Agora, crie um novo arquivo de serviço systemd que irá executar o script na inicialização.

  1. Crie o arquivo de serviço:
sudo nano /etc/systemd/system/meuservicodeinicializacao.service
  1. Adicione o seguinte conteúdo ao arquivo:
[Unit]
Description=Meu script de inicialização
After=network.target
 
[Service]
ExecStart=/usr/local/bin/meuscriptdeinicializacao.sh
Type=simple
Restart=on-failure
 
[Install]
WantedBy=multi-user.target
  1. Salve e feche o arquivo.

Passo 3: Habilitar e Iniciar o Serviço

  1. Recarregue o daemon do systemd para que ele reconheça o novo serviço:
sudo systemctl daemon-reload
  1. Habilite o serviço para ser executado na inicialização:
sudo systemctl enable meuservicodeinicializacao.service
  1. Inicie o serviço para testar se ele está funcionando:
sudo systemctl start meuservicodeinicializacao.service

Passo 4: Verificar

Você pode verificar se o script foi executado na inicialização consultando o arquivo de log (ou qualquer saída gerada pelo seu script).

cat /var/log/inicializacao.log

Esse procedimento garante que o seu script shell seja executado toda vez que a máquina for iniciada.