Linux / Comando w: consultar sessões de login e sua atividade

w mostra sessões de login e informações sobre a atividade associada a seus terminais, como inatividade e o processo apresentado em WHAT. Use-o para examinar uma sessão com mais contexto do que na lista do comando who. A saída depende das fontes de sessão e de processo disponíveis; ela não reúne todos os processos nem comprova, sozinha, a ausência de acessos.

Sintaxe e preparação

w [opção...] [usuário]

Os termos entre colchetes são marcadores descritivos, não texto para copiar literalmente. Sem o nome de usuário, w consulta as sessões disponíveis; com um nome, seleciona as informações daquele usuário. A implementação e a versão instaladas determinam quais opções e campos estão disponíveis.

Antes de executar os exemplos em Linux, confira command -v w, w --help, w -V e man w. A descrição abaixo segue o manual do procps-ng publicado pelo Debian, na versão 4.0.7. No Bash do Git para Windows disponível para esta verificação, w não estava instalado: os comandos retornaram 127, com diagnóstico de comando não encontrado. Portanto, a linha ilustrativa adiante não é uma medição de uma sessão Linux executada nesse ambiente.

Consultar sessões e o resumo do sistema

Execute no sistema Linux que deseja observar:

w

Na apresentação normal do procps-ng, o resumo inicial informa o horário atual, o tempo de funcionamento, a quantidade de usuários registrada na consulta e as médias de carga de 1, 5 e 15 minutos. A seguir aparecem os títulos das colunas e as linhas de sessão. Para interpretar o tempo de funcionamento e as médias de carga, consulte também a explicação do comando uptime.

Leia primeiro os títulos realmente exibidos em seu terminal. O conjunto pode incluir USER, TTY, FROM, LOGIN@, IDLE, JCPU, PCPU e WHAT. Não aplique posições fixas de colunas a saídas de versões ou configurações diferentes, especialmente quando a coluna de origem remota estiver oculta.

O resumo é do ambiente consultado, não uma relação de todas as contas cadastradas. Uma mesma conta pode ter várias sessões. Em contêineres e acessos sem uma sessão reconhecida pela implementação, a listagem pode ser incompleta em relação à atividade que você pretende investigar.

Filtrar as sessões de um usuário

O exemplo usa alice como nome ilustrativo. Para consultar uma conta real, substitua-o pelo nome que deseja examinar:

w alice

Esse argumento limita as informações de sessão ao usuário indicado. Se não houver uma linha correspondente, confira o nome e as fontes disponíveis antes de concluir que a conta não existe ou que não está executando trabalho. Uma consulta de sessões não substitui uma consulta de contas ou de processos.

Ocultar o cabeçalho com -h

Para concentrar a leitura nas linhas de sessão, use:

w -h

No procps-ng, -h omite o cabeçalho, incluindo o resumo inicial e os títulos das colunas; não significa ocultar apenas um campo da primeira linha. As linhas de sessão continuam disponíveis quando forem encontradas. Compare primeiro w e w -h no mesmo sistema para reconhecer os campos antes de retirar seus rótulos.

Se precisar de ajuda, use w --help: neste comando, -h tem a função de ocultar o cabeçalho. Não presuma que essa opção curta signifique ajuda em todos os programas.

Interpretar uma linha de sessão

O comando abaixo repete a consulta sem cabeçalho. A linha seguinte é fictícia e conserva os dados do exemplo para mostrar como ler uma saída que inclui a coluna FROM:

w -h

Exemplo de saída, não observado na verificação Windows:

alice pts/0 192.0.2.10 09:00 2:10 0.01s 0.01s vim notes.txt

Nessa ilustração, alice é o nome de login, pts/0 identifica o terminal, 192.0.2.10 ocupa o campo de origem remota e 09:00 é o horário de entrada. O campo 2:10 corresponde a IDLE; os dois valores 0.01s correspondem a JCPU e PCPU. Por fim, vim notes.txt é a linha de comando resumida em WHAT. Os valores e a apresentação não devem ser tratados como um resultado obrigatório de w -h.

A presença de FROM nessa linha pressupõe uma configuração que mostre a origem. O manual do procps-ng informa que a apresentação padrão desse campo pode mudar conforme a compilação da distribuição. Confira a saída de w com seus rótulos antes de associar o endereço ao terceiro campo de qualquer resultado.

IDLE indica a inatividade associada ao terminal. Um terminal sem entrada recente pode ter trabalho em andamento; não use esse campo como prova de que todos os processos do usuário estão ociosos. O manual também registra limitações para o tempo de inatividade de certas sessões X/Wayland.

JCPU é o tempo de CPU dos processos ligados ao terminal: inclui trabalhos em segundo plano ainda em execução, mas não trabalhos anteriores já encerrados. PCPU é o tempo de CPU do processo atual indicado em WHAT. São tempos acumulados com escopos diferentes, não percentuais instantâneos de uso da CPU nem o tempo desde o login.

WHAT apresenta um processo associado à sessão naquele momento. Não é a lista de todos os serviços e processos em segundo plano da conta. Um nome de comando nessa coluna é um ponto de partida para investigar a sessão, não uma explicação completa de toda a atividade do usuário.

Escolher o formato e a origem remota

Use -s quando uma apresentação curta bastar. No procps-ng, ela omite o horário de login, JCPU e PCPU; portanto, não compare os campos restantes com a posição que ocupavam na apresentação completa.

A opção -f alterna a exibição do campo FROM. Ela não significa necessariamente “ativar”: se a distribuição já o mostra por padrão, a mesma opção pode ocultá-lo. Compare as duas apresentações no sistema consultado e mantenha os títulos visíveis durante a comparação.

Para a origem em formato de endereço IP, -i tem uma condição importante: no manual do procps-ng 4.0.7, essa opção atua em plataformas sem systemd. Nas que usam systemd, -i é ignorada, e o campo de origem pode trazer um nome de host ou um IP fornecido por essa fonte. Não trate -i como garantia de resolução ou de obtenção de um endereço remoto.

Opção Efeito e condição
-h Omite o cabeçalho; preserva as linhas de sessão encontradas.
-s Usa o formato curto, sem horário de login, JCPU e PCPU.
-f Alterna a coluna de origem; o estado inicial depende da compilação.
-i Pede a origem como IP em plataformas sem systemd; é ignorada quando a fonte é systemd.

Investigar informações ausentes ou divergentes

O procps-ng pode obter as sessões pela tabela do systemd ou pelo arquivo utmp, conforme a plataforma, e usa informações de processos de /proc. Por isso, não é correto afirmar que toda versão de w depende exclusivamente de um único arquivo de login. Verifique a versão, a implementação e o ambiente antes de explicar uma ausência.

Se o comando não existir, resolva a disponibilidade no sistema Linux desejado antes de interpretar uma saída. Se executar, leia os diagnósticos e consulte echo "$?" imediatamente depois do comando isolado. Uma falha de execução e uma consulta sem linhas de sessão são situações diferentes.

Ao comparar resultados, mantenha a consulta na mesma máquina e no mesmo contexto de contêiner. As sessões, os processos e o comando atual podem mudar entre duas execuções. Para investigar um acesso específico, examine também os registros de autenticação e do serviço correspondente; w não é uma auditoria completa de todas as conexões.

Pergunta frequente

Quando usar w e quando usar who?

Use who para uma lista de sessões registradas, com nome, terminal e horário de entrada. Use w quando também precisar do contexto de atividade apresentado pela implementação, como inatividade, tempos de CPU e WHAT. A completude de ambos depende das fontes disponíveis no ambiente consultado.

Documentação

A página de manual de w publicada pelo Debian detalha os campos, as opções e suas condições. O manual de w do projeto procps-ng reproduzido no man7.org apresenta também as limitações das sessões e as fontes de informação.