Questão de Sistemas Operacionais — Geral — Quadrix 2025
- Código
- qa701224
- Banca
- Quadrix
- Órgão
- CRM ES
- Ano
- 2025
- Cargo
- ATI ( )
- Asystemctl status
- Bps aux | grep service
- Cservice ‑‑status‑all
- Dsystemctl list‑units ‑‑type=service ‑‑state=active
- Etop
GabaritoD — systemctl list‑units ‑‑type=service ‑‑state=active
Gabarito: letra D. No Ubuntu 20.04, que utiliza o systemd como sistema de inicialização, o comando systemctl list-units --type=service --state=active é o que lista todos os serviços ativos, pois o systemctl é a ferramenta de gerenciamento do systemd e os filtros --type=service e --state=active restringem a saída exatamente aos serviços em estado ativo. As demais alternativas ou listam processos de forma genérica, ou mostram o status de um serviço específico, ou exibem o uso da CPU, não atendendo ao que o enunciado pede.
O systemd é o sistema de inicialização (init) padrão nas distribuições Linux modernas, incluindo o Ubuntu desde a versão 15.04. Ele é responsável por iniciar, parar e gerenciar os serviços (daemons) do sistema. O comando systemctl é a interface principal para interagir com o systemd, permitindo controlar serviços, unidades e o próprio sistema. Para listar serviços, usamos systemctl list-units, que mostra todas as unidades carregadas. Os filtros --type=service limitam a listagem apenas a unidades do tipo serviço, e --state=active filtra apenas aquelas que estão no estado ativo (em execução). Essa combinação é precisa e atende exatamente ao que o enunciado pede: a lista de todos os serviços ativos.
Para entender melhor, é importante diferenciar os conceitos de processo e serviço. Um processo é qualquer programa em execução no sistema, enquanto um serviço é um processo (ou grupo de processos) que roda em segundo plano, geralmente iniciado pelo systemd, e que fornece funcionalidades ao sistema ou à rede (como um servidor web, um banco de dados, etc.). O comando ps aux lista todos os processos, mas não distingue quais são serviços gerenciados pelo systemd. Já o systemctl é a ferramenta específica para gerenciar serviços no contexto do systemd.
Na prática, se você executar systemctl list-units --type=service --state=active em um servidor Ubuntu 20.04, verá uma saída semelhante a esta:
UNIT LOAD ACTIVE SUB DESCRIPTION
apache2.service loaded active running Apache HTTP Server
mysql.service loaded active running MySQL Community Server
ssh.service loaded active running OpenBSD Secure Shell serverEssa saída mostra o nome da unidade, se está carregada, o estado (active), o subestado (running) e uma descrição. É exatamente isso que o enunciado pede.
A pegadinha da questão está em confundir o comando systemctl status (que mostra o status de um serviço específico, não a lista de todos) com o systemctl list-units (que lista as unidades). Além disso, o comando service --status-all é uma ferramenta mais antiga, do SysVinit, que lista serviços, mas não filtra por estado ativo de forma tão clara quanto o systemctl. O ps aux | grep service lista processos que contenham a palavra "service" no nome, o que não é uma lista confiável de serviços ativos. E o top mostra processos em tempo real, mas não é específico para serviços.
Guarde a distinção entre listar unidades (systemctl list-units) e ver o status de uma unidade específica (systemctl status): é exatamente nessa fronteira que as alternativas se dividem.
O comando systemctl status é usado para exibir o status de um serviço específico (por exemplo, systemctl status ssh), mostrando se está ativo, inativo, falhou, etc. Ele não lista todos os serviços ativos. Para listar, é necessário usar systemctl list-units. A alternativa confunde o comando de status com o de listagem.
O comando ps aux | grep service lista todos os processos que contenham a palavra "service" no nome. Isso não é uma lista confiável de serviços ativos, pois muitos serviços têm nomes que não contêm "service" (como apache2, mysql, sshd), e processos que não são serviços podem conter a palavra. Além disso, ps aux lista processos, não serviços gerenciados pelo systemd. A alternativa tenta usar um filtro de texto para simular a listagem, mas não é a forma correta.
O comando service --status-all é uma ferramenta do SysVinit, o sistema de inicialização mais antigo, que lista todos os serviços conhecidos, mas não filtra por estado ativo de forma clara. No Ubuntu 20.04, que usa o systemd, esse comando pode até funcionar por compatibilidade, mas não é a forma recomendada nem a mais precisa para listar serviços ativos. O systemctl é a ferramenta correta no contexto do systemd.
O comando systemctl list-units --type=service --state=active é exatamente o que o enunciado pede. Ele lista todas as unidades do tipo serviço que estão no estado ativo. O systemctl é a ferramenta de gerenciamento do systemd, e os filtros --type=service e --state=active restringem a saída aos serviços ativos. É a forma padrão e precisa de obter essa informação no Ubuntu 20.04.
O comando top exibe uma visão em tempo real dos processos do sistema, ordenados por uso de CPU ou memória. Ele não é específico para serviços e não lista apenas os serviços ativos. É uma ferramenta de monitoramento de processos, não de gerenciamento de serviços.
Gabarito: letra D
Link permanente: /questoes/qa701224