Linux / Comando who: consultar sessões de login e interpretar a saída

who lista as sessões de login presentes nos registros consultados pelo sistema, mostrando dados como usuário, terminal e horário de entrada. É útil para uma verificação rápida de sessões registradas. Uma saída vazia não prova que não há usuários, conexões ou processos em execução.

Sintaxe e origem das informações

who [opção...]

A sintaxe acima é descritiva. Sem indicar um arquivo, o GNU who consulta o registro de login padrão do ambiente; na implementação examinada, a ajuda indica /var/run/utmp. Utmp é um formato de registro de sessões, não uma lista de todos os processos. O caminho e a disponibilidade dessas informações dependem do sistema.

Confira type -a who, who --version e who --help; em Linux, consulte man who. Os comandos de consulta foram executados com GNU who 8.32 no Bash do Git para Windows, em localidade C. Nessa execução, who ficou vazio, who -H mostrou apenas o cabeçalho e who -q informou zero. Isso não foi um teste com sessões SSH ativas nem uma reprodução de registros de login Linux.

Consultar as sessões registradas

Execute o comando no ambiente que deseja consultar:

who

Quando há registros correspondentes, cada linha normalmente contém nome de login, terminal e horário de entrada. Informações de origem podem aparecer depois. A mesma conta pode aparecer em mais de uma linha quando há várias sessões; não confunda linhas de sessão com uma relação de contas distintas cadastradas.

Who não consulta a identidade efetiva do processo para responder com qual conta um comando está sendo executado. Para essa pergunta, use o comando whoami ou consulte UID e grupos com o comando id.

Exibir os títulos das colunas

Acrescente -H para apresentar o cabeçalho antes das linhas de sessão:

who -H

Na consulta GNU 8.32 em localidade C, sem sessões listadas, o resultado foi somente o cabeçalho com NAME, LINE, TIME e COMMENT. Ele identifica as colunas de nome, terminal, horário e comentário. Os rótulos e a apresentação podem variar conforme opções, implementação e localidade.

A existência de um cabeçalho não significa que uma sessão foi encontrada. Examine as linhas de dados abaixo dele e separe o sucesso da execução da presença de registros.

Obter o resumo com -q

A opção -q resume os nomes de login encontrados e sua contagem:

who -q

No ambiente conferido, a saída foi uma linha vazia seguida de # users=0, com status 0. Essa linha é uma saída do programa, não um comando para executar. O total descreve o que who encontrou nos registros consultados; não é a quantidade de processos ou um inventário de todas as contas do sistema.

Use a forma simples com -q quando quiser esse resumo. No GNU who, -q prevalece sobre as outras opções de apresentação; não espere que combinar who -q -H produza a mesma tabela detalhada de who -H.

Ler uma linha de sessão

A consulta a seguir usa novamente who. A saída apresentada depois é fictícia e serve para identificar os campos; não representa uma sessão observada no teste:

who

Exemplo de saída, com conta, horário e endereço usados apenas como dados ilustrativos:

alice pts/0 2026-09-28 09:00 (192.0.2.10)

Nessa linha, alice é o nome de login registrado, pts/0 identifica o terminal e 2026-09-28 09:00 é o horário de entrada mostrado na ilustração. O texto entre parênteses é uma informação de origem registrada para essa sessão. Não presuma que esse campo sempre contenha um endereço IP no mesmo formato.

O horário de entrada não é uma medida de uso de CPU nem o horário da última atividade do usuário. Para um resumo de atividade associado às sessões, a ferramenta w pode acrescentar informações quando estiver instalada; ela responde a uma pergunta diferente de apenas listar registros de login. O exemplo de who também não é uma lista completa de processos.

Consultar informações adicionais

who -u inclui informações adicionais sobre as sessões, como o tempo de inatividade. Inatividade do terminal não deve ser interpretada automaticamente como ausência de trabalho em execução. A disponibilidade dos campos depende dos registros e do ambiente.

who -b procura apresentar o horário da última inicialização registrado. No teste Windows descrito acima, -u e -b terminaram com status 0 e sem linhas de dados. Em particular, uma saída vazia de -b não significa que o sistema nunca foi inicializado; ela não fornece um horário de boot utilizável nessa consulta.

Investigar uma saída vazia ou incompleta

Em contêineres, instalações mínimas e certos acessos sem sessão de login registrada, who pode não ter dados suficientes para listar as sessões que você espera. Confira em qual máquina, contêiner e sessão a consulta foi feita antes de comparar resultados de ambientes diferentes.

Para verificar a execução, leia o diagnóstico e consulte echo "$?" imediatamente após o comando isolado. Uma falha deve ser investigada como falha; uma consulta bem-sucedida com zero registros também não comprova ausência de atividade. No teste, consultas como id -u continuaram identificando o processo, embora who não mostrasse sessões.

Quando o objetivo for investigar acesso por um serviço específico, confira também os registros de autenticação e do próprio serviço no ambiente correspondente. Who é uma consulta de registros de sessão, não uma auditoria completa de todas as formas de acesso.

Opções principais

Opção Uso
-H Mostra o cabeçalho das colunas.
-q Resume nomes de login e a contagem dos registros encontrados.
-u Acrescenta informações como a inatividade das sessões.
-b Mostra o horário de boot disponível nos registros consultados.

Pergunta frequente

Se who não mostrar nada, posso concluir que não há usuários conectados?

Não. A saída depende da disponibilidade e do conteúdo dos registros de login do ambiente consultado. Verifique o diagnóstico, o status, o contexto da sessão e os registros do serviço relevante antes de tirar uma conclusão sobre conexões ou atividade.

Documentação

Consulte a documentação oficial do GNU who para as opções de consulta. A página de manual de who publicada pelo Debian descreve também o arquivo padrão e a seleção de campos.