Systemd é um gerenciador de sistema e de serviços. Ele é inicializado como um link simbólico em /sbin/init.
O systemd substituiu o SysV.
O Systemd gerencia o sistema e também serviços/programas. Como gerente de serviços o systemd pode parar, iniciar e reiniciar serviços. Além de muitas outras coisas, como, por exemplo, fazer com que um serviço seja iniciado automaticamente ao ligar o computador. Em um de nossos artigos sobre o samba aprendemos como fazer o samba ser iniciado automaticamente e gerenciado pelo systemd.
Gerenciando Serviços com Systemd
Abaixo usarei o programa samba como exemplo, mas poderia ser qualquer outro.
Se com o antigo SysV usávamos “service samba start”, “service samba status “, “service samba stop” para, respectivamente, iniciarmos, ver status e pararmos o samba, passamos a fazer com o samba no systemd da seguinte maneira:
Iniciar o samba
systemctl start samba
parar o samba
systemctl stop samba
ver o status do samba
systemctl status samba
Runlevels em Systemd
O SysV trabalhava com runlevels.
Runlevels diz respeito à quais serviços/programas serão iniciados ao ligarmos o computador(sistema operacional). Um outro fator que está relacionado com runlevels é o estado atual do sistema operacional como veremos abaixo.
- Run Level 0: faz com que o sistema operacional seja desligado, ou seja, altera o estado do sistema operacional para poweroff.
- Run Level 1: faz com que o sistema se inicie em modo/estado de recuperação, sem acesso à rede. É algo parecido com o “modo de segurança do windows”.
- Run Level 3: faz com que o sistema seja iniciado sem interface gráfica e seja usado apenas para linha de comandos.
- Run Level 5: Faz com que o sistema seja iniciado com interface gráfica e todos os demais programas.
- Run Level 6: reinicia(reboot) o sistema operacional
Como dito anteriormente, runlevels pertencem ao antigo SysV.
O systemd trabalha com targets ao invés de runlevels
- poweroff. target é usado ao invés de runlevel 0
- rescue.target tem a função do runlevel 1
- multi-user.target tem a função de runlevel 3
- graphical.target a função do runlevel 5
- reboot.target a função de runlevel 6
Em systemd ao invés de “init 0” para desligar o sistema usamos “poweroff” ou “systemctl isolate poweroff.target”
elder@ubuntu:~$ poweroff
ao invés de init 6 para reniciarmos usamos “reboot” ou “systemctl isolate reboot.target”
elder@ubuntu:~$ reboot
ao invés de “init 1” para iniciarmos em modo de recuperação(também conhecido como single) usamos “systemctl isolate rescue.target”
elder@ubuntu:~$ sudo systemctl isolate rescue
Se quisermos iniciar o Sistema sem interface gráfica usamos “systemctl isolate multi-user.target” ao invés de “init 3”
elder@ubuntu:~$ sudo systemctl isolate multi-user.target
No SysV usávamos o comando “runlevel” para vermos qual runlevel estava sendo usado no momento
elder@ubuntu:~$ runlevel N 5
com systemd usamos “systemctl get-default ”
elder@ubuntu:~$ systemctl get-default graphical.target
para definirmos qual runlevel seria usado todas as vezes que ligássemos o sistema editávamos o arquivo “/etc/inittab”. Para definirmos um taget no systemd basta executarmos “systemctl set-default target_a_ser_usado”
elder@ubuntu:~$ sudo systemctl set-default graphical.target
É bom diferenciarmos o set-default de isolate. set-default deixa as configurações/alterações do systemd permanentes e o isolate funciona apenas para aquele momento que o sistema foi iniciado.
Processo init
No SysV havia o processo init. Init era o primeiro processo a ser iniciado e ele iniciava os demais e era considerado o pai de todos o processos por isso.
Hoje o processo init ainda existe mas apenas por questão de compatibilidade de uso.
O processo pai de todos os outros no systemd é um processo chamado de systemd 🙂
Na verdade, o processo init nos sistemas atuais é apenas um link para o systemd.
elder@pcLab:~$ ls -l /sbin/init lrwxrwxrwx 1 root root 20 jul 22 2019 /sbin/init -> /lib/systemd/systemd
O comando poweroff também é um link para o systemd
elder@ubuntu:~$ ls -l /sbin/poweroff lrwxrwxrwx 1 root root 14 mai 3 2020 /sbin/poweroff -> /bin/systemctl
O comando reboot também é um link
elder@ubuntu:~$ ls -l /sbin/reboot lrwxrwxrwx 1 root root 14 mai 3 2020 /sbin/reboot -> /bin/systemctl
Conclusão
Aqui vimos apenas dicas rápidas sobre o systemd. É bom saber que os comandos do SysV ainda podem ser executados nos sistemas que usam o systemd, por exemplo, podemos usar à vontade os comandos “init 0”, “init 6” para desligarmos e reiniciarmos o sistema operacional; assim como os comandos “service status ssh” para vermos status do programa ssh ou “service start ssh” para iniciarmos o ssh. Esses comandos funcionam mas não significa que o SysV esteja instalado juntamente com o systemd. Na verdade o que há são links como: runlevel6.target que aponta para reboot.target, runlevel5.target que aponta para graphical.target e assim por diante.
One Comment to “SysV e Systemd”