É muito importante para um administrador de redes/sistemas/Analista de Cyber saber gerenciar serviços no SO. Quando se faz uma alteração em um arquivo de configuração, é necessário reiniciar o serviço. O sistema de gerenciamentos do Linux antigo é chamado de SysVinit, que define runlevels (níveis) que um determinado daemon irá ser executado.
Antigamente, era usado o SysVinit, contudo, um novo sistema de gerenciamento e supervisão de serviços foi criado trazendo várias melhorias, conhecido como Systemd.
O processo de inicialização de qualquer sistema operacional envolve uma série de procedimentos e eventos que devem ocorrer em determinada ordem para que o resultado final seja o esperado.
O systemd é um novo sistema de supervisão e inicialização de serviços, substituto do sistema legado SysVinit, que trás consigo algumas melhorias como paralelismo na inicialização de serviços e utilizar outras linguagens de programação diferentes de shell scripts. Ainda existe muita discussão sobre ele, mas já está sendo usado em várias distribuições.
O estado de um serviço pode ser visto com systemctl status nome.tipo. Se o tipo de unidade não for indicado, systemctl irá exibir o status dos serviços, se existir um. Exemplo:
systemctl status sshd.service
- Listando o estado de todas as units para verificar o startup de um sistema:
systemctl
- Listando o estado de apenas as units de serviços:
systemctl --type=service
- Investigando qualquer unit que falhou ou está no estado de manutenção; Opcionalmente, adicione -l para exibir a saída completa:
systemctl status sshd.service -l
Outro detalhe muito importante, sempre verificar se a porta relativa ao serviço está aberta, utilizando comando ss:
ss -natlp | grep sshd
Ah André eu não sei verificar quais serviços e portas estão interligados. Verificar o arquivo /etc/services.
vim /etc/services
- O argumento status pode também ser usado para determinar se uma unit particular está ativa e exibir se está unit está habilitada para iniciar durante o boot:
systemctl is-active sshd
systemctl is-enable sshd
- Exibe apenas os serviços que falharam:
systemctl --failed --type=service
Iniciar, parar, reiniciar, recarregar, e verificar o status são ações comuns realizadas por quem administra os serviços.
- Verificar o status do service sshd:
systemctl status sshd.service
Verificar se o processo indicado na saída do comando (30118) está em execução:
ps -up 30118
- Parar o serviço e verificar o status:
systemctl stop sshd.service
systemctl status sshd.service
- Iniciar o serviço e verificar o status. O ID do processo foi alterado:
systemctl start sshd.service
systemctl status sshd.service
- Parar e iniciar o serviço com um único comando:
systemctl restart sshd.service
- Emitir instruções para um serviço para ler e recarregar (reload) seu arquivo de configuração sem uma parada completa com um stop start. O ID do processo não vai mudar:
systemctl reload sshd.service
systemctl status sshd.service
Serviços são iniciados durante o boot quando links são criados adequadamente no diretório de configuração do systemd. Esses links são criados e removidos com o comando systemctl.
- Exibindo o status de um serviço:
systemctl status sshd.service
- Desabilitar o serviço e verificar o status. Note que desabilitando o serviço você não para o serviço:
systemctl disable sshd.service
systemctl status sshd.service
- Habilitando o serviço e verificando o status:
systemctl enable sshd.service
systemctl is-enable sshd.service
- Pode-se habilitar um serviço para iniciar durante o boot e startar ao mesmo tempo:
systemctl enable --now sshd.service
O journald é um dos componentes centrais do sistema de inicialização systemd, responsável pela coleta e armazenamento dos logs gerados pelo sistema e por suas aplicações. Ao contrário dos tradicionais sistemas de log baseados em arquivos de texto (como o syslog), o journald utiliza um formato binário para armazenar as informações, o que traz diversas vantagens em termos de performance, segurança e flexibilidade na manipulação dos dados registrados.
Por meio do comando journalctl é possível aplicar filtros por data, nível de log, unidade de serviço e outros parâmetros, o que facilita a identificação e resolução de problemas. Exemplos comuns de uso incluem:
- Consultar logs do kernel:
journalctl -k
- Mostrar os logs somente dos serviços de rede:
journalctl -u network.service
- Exibir logs recentes em tempo real:
journalctl -f
- Exibir logs detalhados filtrando por nível de severidade:
journalctl -u ssh.service -p err