Systemd: como funciona, diferenças para sysvinit e comandos

Se você começou a estudar sobre o sistema Linux recentemente, sem dúvidas deve ter se deparado com o “systemd”. 

Mas, você sabe, exatamente, o que ele significa? Ou ainda, qual a diferença entre ele e o System V, também famoso no Linux? 

Essas dúvidas são muito comuns e podem ser facilmente respondidas, te ajudando a ter o direcionamento correto. 

Foi pensando nisso que a equipe Certificação Linux desenvolveu este artigo completo, com tudo o que você precisa saber sobre o systemd. Basta continuar a leitura. Confira!

Init system: entenda o conceito

Antes de entender o systemd, é necessário entender o conceito de init system. Como o próprio nome sugere, o init system é responsável por toda a inicialização do sistema. 

Isso significa que, para que o Linux seja ativado, o init system é essencial. Nessa vertente, predomina o systemd, que é uma grande ferramenta de auxílio ao sistema de inicialização. 

Em outros sistemas, como é o caso do Windows, esse conjunto de ferramentas para inicialização também existe, mas através do “Service Control Manager”, ou Gerenciador de Comandos de Serviços, em uma tradução livre. 

O que é um systemd?

O systemd representa a inicialização do sistema operacional Linux. Nele, existem outros programas que rodam em segundo plano, a fim de auxiliar o desenvolvimento desse processo. 

Esses complementos do segundo plano são chamados de daemon, que pode ser considerado um processo filho do init.

Como funciona um systemd?

De modo simples, assim que o kernel do Linux é ativado, acontece a atuação do systemd, que será responsável por ativar todas as etapas do processo. 

Nesse momento, softwares responsáveis pelo desempenho de itens do hardware como placas de vídeo e processadores também são despertados. 

É por meio do systemd que as distribuições do Linux, também chamadas de distros, se tornam viáveis e funcionam corretamente. 

Isso explica como o systemd funciona. Em sua estrutura, existem ainda outras ferramentas que são responsáveis por gerenciar e organizar tarefas para manter o bom desempenho. 

Todas essas funções são organizadas em forma de unidades, que são popularmente chamadas de units, sendo que algumas muito comuns nesse universo são as de service, time, socket, path e swap.

Cada uma dessas unidades é essencial para que todo o sistema funcione e seja frequentemente otimizado.

Comparativo – system V (sysvinit) x systemd

linux-systemd-ou-systemv Systemd: como funciona, diferenças para sysvinit e comandos
Foto: Freepik | Systemd é melhor que system v?

Outra dúvida muito comum, após identificar o significado do systemd, é qual a diferença entre ele e o system V. 

A verdade é que cada um possui suas singularidades e funções, mas ambos se referem ao sistema de inicialização. 

Algumas das principais diferenças entre o system V e systemd estão na tabela abaixo:

System VSystemd
é mais antigo, lembrando o Unix padrãoé mais recente, tendo várias distros migrando para ele
tem a inicialização um pouco mais lentafornece uma inicialização mais rápida
a inicialização é através de arquivos de scripts shella inicialização ocorre através de arquivos “.service”
faz uso de mais memória e hardwareutiliza pouca memória
API mais antigatem uma API melhorada
pode ser mais complexotem um design simples e eficiente

Desvantagens do system V

Embora o System V init Daemon seja um sistema robusto e utilizado no Kernel 2.4, ele tem sérias desvantagens, especialmente quando comparado com o systemd. Elas são:

  • é uma das primeiras versões do sistema Unix, e por isso, um pouco antigo;
  • existe maior chance de incompatibilidade com as distros e sistemas;
  • em alguns casos, o system V tem se tornado obsoleto;
  • monitoramento dos serviços (daemon) em execução é limitado, gerando processos zombies;
  • o reinício de serviços que pararam de funcionar é problemático;
  • existe um paralelismo que torna tudo mais complicado;

Devido a várias limitações do init, outro sistema especial de controle dos processos de boot e gerência da execução dos programas foi criado e denominado systemd.

Por isso, o systemd vale muito mais a pena, se comparado ao system V (comumente pronunciado como system five).

Novidades do systemd

A principal novidade do systemd é sua capacidade e eficiência, com a execução de funções de modo cada vez mais rápido e leve. 

Assim, outros processos não são afetados, muito menos prejudicados. 

Além disso, este novo sistema já é amplamente utilizado nas distribuições mais conhecidas, especialmente nas versões de Kernel superiores a 2.6. 

Sua principal vantagem é a carga do sistema de forma mais rápida, executando os serviços e processos em paralelo.

Isso foi possível com a chegada dos novos processadores dotados de múltiplos núcleos, que permitem a execução de diversas threads em paralelo.

Como novidades e vantagens do systemd, podemos citar:

  • ativação via socket e bus (executa os serviços sob demanda);
  • melhor paralelização dos processos;
  • uso de cgroups (control groups – grupos de controle) ao invés de PIDS;
  • suporta criação de imagens de estado de memória para salvar e restaurar estados de execução.
  • o sistema de controle de grupos permite que o systemd supervisione os processos, de forma a garantir que, quando um serviço é parado, todos os processos filhos, netos, bisnetos etc. também sejam parados.
  • com um gerenciamento mais robusto, mais ciclos de CPU são necessários para a criação de novos processos. Mas devido ao alto desempenho dos processadores, isto não parece ser um problema para o systemd.
  • no systemd, a carga de processos, mudança de runlevel e scripts de carga são bem diferentes do init.

A sintaxe dos arquivos de configuração do Systemd, chamados de unidades, é inspirada nos arquivos .ini do Windows. Estes arquivos são encontrados em dois diretórios, a saber:

/usr/lib/systemd/system/: Unidades provenientes de pacotes de software instalados;

/etc/systemd/system/: Unidades instaladas pelo administrador;

Veja como lidar com os serviços no systemd utilizando o comando systemctl:

Como fazer o controle de serviços usando o comando systemctl

linux-systemd-comandos Systemd: como funciona, diferenças para sysvinit e comandos
Foto: Shutterstock | Como funcionam os comandos em systemd?

Controlar serviços no systemd não é difícil. Através do comando systemctl, tudo se torna possível. 

Para iniciar novos serviços, por exemplo, basta unir o comando systemctl com o subcomando “start”. 

Ao mesmo tempo, para parar determinado serviço, basta selecionar o comando “stop”.

1. verificar o status de um serviço no systemd

# systemctl status cron.service

cron.service – Command Scheduler

               Loaded: loaded (/lib/systemd/system/cron.service; enabled)

               Active: active (running) since Mon, 28 May 2012 18:09:57 -0300; 7min ago

             Main PID: 673 (cron)

               CGroup: name=systemd:/system/cron.service

                                 + 673 /usr/sbin/cron -n

2. Parar um serviço no systemd

# systemctl stop cron.service

Veja o status do serviço quando parado:

# systemctl status cron.service

cron.service – Command Scheduler

               Loaded: loaded (/lib/systemd/system/cron.service; enabled)

               Active: inactive (dead) since Mon, 28 May 2012 18:18:26 -0300; 27s ago

             Main PID: 673 (code=exited, status=0/SUCCESS)

               CGroup: name=systemd:/system/cron.service

3. Para iniciar um serviço no systemd

# systemctl start cron.service

4. Para reiniciar um serviço no systemd

# systemctl restart cron.service

5. Para habilitar um serviço durante a carga do sistema no systemd

# systemctl enable cron.service

6. Para desabilitar um serviço durante a carga do sistema no systemd

# systemctl disable cron.service

7. Para mudar o runlevel para o modo texto (runlevel 3)

# systemctl isolate multi-user.target

8. Para mudar o runlevel para o modo gráfico (runlevel 5)

# systemctl isolate graphical.target

9. Para Alterar o runlevel padrão no systemd

1) Apagar o link simbólico:

# rm /etc/systemd/system/default.target

2) Para colocar o runlevel3 como padrão:

# ln -sf /lib/systemd/system/multi-user.target /etc/systemd/system/default.target

Aprofunde seu conhecimento em Linux com o nosso curso online! Matricule-se agora!

Conclusão

Percebeu como aprender sobre o systemd não é complicado? Basta buscar as informações na fonte correta!

Se você gosta de conteúdos sobre Linux e esse universo de principais comandos Linux, recomendamos que você acesse o Blog Certificação Linux. Nele, você encontra diversos conteúdos incríveis sobre o tema. Vale a pena conferir!