Systemd no LinuxEntenda como funciona o Systemd no Linux para iniciar ou parar serviços atrvés do comando systemctl
Antes de abordar o systemd, vamos falar um pouco da motivação para os programadores desenvolverem o systemd.
Para isso é preciso entender as limitações que o systemV tem.
Desvantanges do SystemV
Embora o System V init Daemon seja um sistema robusto e utilizado no Kernel 2.4, ele tem sérias desvantagens, tais como:
- Monitoramento dos serviços (daemon) em execução é limitado, gerando processos zombies;
- O reinício de serviços que pararam de funcionar é problemático;
- Paralelismo é complicado.
- Systemd
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.
Novidades do systemd
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:
Para 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
Para 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
Para iniciar um serviço no systemd
# systemctl start cron.service
Para reiniciar um serviço no systemd
# systemctl restart cron.service
Para habilitar um serviço durante a carga do sistema no systemd
# systemctl enable cron.service
Para desabilitar um serviço durante a carga do sistema no systemd
# systemctl disable cron.service
Para mudar o runlevel para o modo texto (runlevel 3)
# systemctl isolate multi-user.target
Para mudar o runlevel para o modo gráfico (runlevel 5)
# systemctl isolate graphical.target
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
Aprenda muito mais sobre Linux em nosso curso online. Você pode fazer a matrícula aqui com trial de 7 dias grátis. Se você já tem uma conta, pode acessar aqui.