Conhecendo (um pouco mais) o Systemd

O systemd é um gerenciador de sistema e serviço para sistemas operacionais Linux, desenvolvido como um substituto para o System V init e o Upstart. É o gerenciador de sistema padrão na maioria das distribuições Linux modernas.

Ele atua como um init system, substituindo os antigos sistemas init como o SysVinit, e oferece uma série de funcionalidades que visam otimizar e simplificar o gerenciamento do sistema.

Foi desenvolvido por Lennart Poettering e Kay Sievers, ambos da Red Hat, com o objetivo de criar um sistema de inicialização mais eficiente, escalável e modular.

A ideia era unificar as diversas ferramentas e scripts de inicialização existentes em uma única solução, simplificando a configuração e o gerenciamento do sistema. Deveria ser mais rápido, mais confiável e mais flexível do que os gerenciadores de sistema anteriores.

Ao iniciar o sistema, o systemd - funcionando como daemon - assume o controle e inicia os demais serviços de forma organizada e eficiente, utilizando um sistema de dependências que garantam que os serviços ser iniciados na ordem correta, evitando conflitos e falhas. Também fornece uma interface para controlar e monitorar serviços.

Ele permite que diversos serviços sejam iniciados simultaneamente, acelerando o processo de boot, utiizando sockets e o protocolo D-Bus para comunicação entre serviços, proporcionando uma maior flexibilidade e eficiência. Oferece comandos intuitivos para “iniciar”, “parar”, “reiniciar” e “verificar” o status de serviços:

Para reiniciar um serviço:
# systemctl restart serviço
ou
$ sudo systemctl restart serviço

Para habilitar um serviço:
# systemctl enable serviço
ou
$ sudo systemctl enable serviço

Para habilitar um serviço imediatamente:
# systemctl enable --now serviço
ou
$ sudo systemctl enable --now serviço

Para desailitar um serviço imediatamente:
# systemctl disable serviço
ou
$ sudo systemctl disable serviço

Para ver o arquivo systemd de um serviço:
# systemctl cat serviço
ou
$ sudo systemctl cat serviço

Para reiniciaciar o systemd:
# systemctl reboot
ou
$ sudo systemctl reboot

Para desligar o systemd:
# systemctl poweroff
ou
$ sudo poweroff

Para ver o log do systemd:
# journalctl -f
ou
$ sudo journalctl -f

Para ver o logo de um serviço:
# journalctl -u serviço
ou
$ sudo journalctl -u serviço

Para ver o log num intervalo de tempo:
# journalctl --since “2024-08-29” --until “2024-08-31”
ou
S sudo journalctl --since “2024-08-29” --until “2024-08-31”

Para ver o log num intervalo de horas:
# journalctl --since “3 hours ago”
ou
$ sudo journalctl --since “3 hours ago”

Os comandos “service” e “systemctl” foram projetados para trabalhar com sistemas de inicialização distintos, mas oferecem funcionalidades sobrepostas para auxiliar na transição entre eles. É fundamental entender as diferenças para gerenciar eficazmente os serviços.

A principal diferença entre “service” e "systemctl" é pertencerem a diferentes sistemas de inicialização. O primeiro, ao SysVinit (System V Init), trabalhando com os arquivos do diretório /etc/init.d; o segundo, ao systemd, com os arquivos em /lib/systemd.

O Systemd inicia serviços em paralelo em vez de serialmente, com tempo de inicialização é mais rápido que do SysVinit. Também oferece um controle um pouco mais sofisticado de daemons, por meio de uma interface de linha de comando (CLI).

Controvérsias

O Systemd é realmente controverso por várias razões. Primeiro, muitas pessoas acham que o systemd não respeita a filosofia Unix, é muito complexo e monolítico, dificultando a solução de problemas.

Segundo, algumas críticas ao systemd afirmam que o systemd não é apenas um sistema init, mas também assume muitas funções. Por exemplo, o systemd tenta gerenciar rede, cron, fstab, syslog, etc. Isso significa que o systemd não é um programa com um uso singular, mas tem múltiplas funções.

Finalmente, o systemd é criticado porque seu arquivo de log não é baseado em texto como os logs do Unix e Linux em comum. Em vez disso, é um arquivo de log binário.

Fontes: links no texto

1 curtida