Como ler a coluna "IDLE" na saída do comando Linux 'w'?


11

Estou tentando descobrir um processo que monitore as sessões dos usuários em um servidor remoto e os avise quando estiverem ociosos por muito tempo, o que com o comando Linux wé apropriado.

O problema é - wusa três formatos diferentes para especificar o tempo ocioso da sessão e não consigo descobrir corretamente. Uma saída de wpode ser assim:

 11:40:57 up 400 days, 10:46, 13 users,  load average: 5.07, 5.10, 4.83
USER     TTY      FROM           LOGIN@   IDLE   JCPU   PCPU WHAT
john     pts/1    XX.XX.XX.XX   Wed13   22:29m  0.13s  0.04s ssh master-db
june     pts/2    XX.XX.XX.XX   Wed13   46.00s  0.67s  0.13s -bash
jenn     pts/4    XX.XX.XX.XX   11:13   27:47   4.16s  0.11s -bash

Como você pode ver, o IDLE possui formatos diferentes para cada um dos usuários:

  • "AA.BBs" obviamente significa que segundos de AA e 1/100 de BB de segundo (46 segundos no caso de junho) se passaram desde a última vez em que ela esteve ativa no console.
  • "AA: BBm" provavelmente significa que horas e minutos de AA se passaram desde que John esteve ativo pela última vez em sua sessão.
  • "AA: BB" é o formato que não consigo entender - há quanto tempo Jennifer não está ativa em sua sessão?

Respostas:


4

Sem um qualificador, significa MM: SS - isto é, minutos e segundos inteiros. Como um bônus adicional, há um quarto formato que você não possui nessa saída - vários dias (NNdays) de inatividade.


10

Na página do manual

O formato padrão é DDdays, HH: MMm, MM: SS ou SS.CC se os tempos forem maiores que 2 dias, 1 hora ou 1 minuto, respectivamente.

então sua saída é MM: SS (> 1m e <1 hora).


1

Não é exatamente a resposta para sua pergunta, mas uma abordagem mais fácil para verificar o tempo ocioso das sessões de login seria olhar para / dev / pts. Os tempos de modificação dos arquivos refletem a última vez que a sessão de logon recebeu entrada.

Você deve poder executar operações stat (por exemplo, stat --format = "% n% X" *) e manter tudo em segundos. Deve facilitar os cálculos de tempo.


1
Se você estiver analisando formatos de hora, procure uma fonte desse carimbo de data / hora no período da época.
CJC

1
Li algo sobre isso, mas notei que os tempos de inatividade informados wsão diferentes dos carimbos de data e hora nos /dev/ptsarquivos. Alguma idéia do porquê?
Guss

Em que contexto é diferente? Eu não olhei para isso com cuidado, mas "w" deve estar puxando as informações de algum lugar, e / dev / pts é um lugar óbvio. Ah, talvez se algo acontecer na tela (/ dev / pts / * deve ser uma comunicação bidirecional); nesse caso, o usuário ficaria ocioso, mas, devido a algo passando pelo dispositivo, / dev / pts / 0, por exemplo, seria atualizado.
CJC

Essa é uma explicação provável e derrotará meu esquema - porque eu quero desligar as sessões inativas, mesmo que o usuário esteja seguindo algum arquivo de log ativo ou usando watch.
Guss

1

A resposta é 27 minutos e 47 segundos

  1. o formato padrão é MM: SS.
  2. 22: 29m significa 22 horas e 29 minutos
  3. 46.00s significa 46 segundos
  4. 4d significa 4 dias
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.