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?
Guss
fonte

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.

mulher
fonte
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).

user9517
fonte
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.

cjc
fonte
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
Kexin Z
fonte