Jak odczytać kolumnę „IDLE” w danych wyjściowych polecenia Linux w?

11

Próbuję wymyślić proces, który monitoruje sesje użytkowników na zdalnym serwerze i ostrzega ich, gdy są zbyt długo bezczynne, co w przypadku polecenia Linux wjest odpowiednie.

Problem w tym, że - wużywa 3 różnych formatów, aby określić czas bezczynności sesji i nie mogę ich poprawnie rozgryźć. Dane wyjściowe wmogą wyglądać następująco:

 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

Jak widać, IDLE ma różne formaty dla każdego z użytkowników:

  • „AA.BBs” oczywiście oznacza, że ​​minęły sekundy AA i BB 1/100 sekundy (46 sekund w przypadku czerwca), odkąd ostatnio była aktywna na konsoli.
  • „AA: BBm” prawdopodobnie oznacza, że ​​minęły godziny AA i minuty BB od czasu ostatniej aktywności Johna w jego sesji.
  • „AA: BB” to format, którego nie potrafię rozgryźć - jak długo Jennifer nie jest aktywna w swojej sesji?
Guss
źródło

Odpowiedzi:

4

Bez kwalifikatora oznacza MM: SS - to znaczy minuty i całe sekundy. Jako dodatkowy bonus, istnieje czwarty format, którego nie masz w tym wyjściu - liczba dni (NNdays) braku aktywności.

womble
źródło
10

Ze strony podręcznika

Standardowy format to DDdays, GG: MMm, MM: SS lub SS.CC, jeśli czasy są dłuższe niż odpowiednio 2 dni, 1 godzina lub 1 minuta.

więc twój wynik to MM: SS (> 1 mi <1 godzina).

użytkownik9517
źródło
1

Nie do końca odpowiedź na twoje pytanie, ale łatwiejszym sposobem sprawdzenia czasu bezczynności sesji logowania byłoby spojrzenie na / dev / pts. Czasy modyfikacji tam zawartych plików odzwierciedlają ostatni raz, kiedy sesja logowania otrzymała dane wejściowe.

Powinieneś być w stanie tam wykonywać operacje stat (np. Stat --format = "% n% X" *) i zachować wszystko w epokowych sekundach. Powinno to ułatwić obliczenia czasu.

cjc
źródło
1
Jeśli odkryjesz, że analizujesz formaty czasu, możesz poszukać źródła tego znacznika czasu w epoce.
cjc
1
Coś o tym czytałem, ale zauważyłem, że zgłoszone czasy bezczynności wsą inne niż znaczniki czasowe /dev/ptsplików. jakiś pomysł dlaczego?
Guss,
W jakim kontekście jest inaczej? Nie przyjrzałem się temu dokładnie, ale „w” musi wyciągać informacje z jakiegoś miejsca, a / dev / pts to oczywiste miejsce. Ach, może jeśli coś się wydarzy na ekranie (/ dev / pts / * powinno być komunikacją dwukierunkową); w takim przypadku użytkownik byłby bezczynny, ale z powodu czegoś przechodzącego przez urządzenie, na przykład / dev / pts / 0 zostałby zaktualizowany.
cjc
Jest to prawdopodobne wytłumaczenie, które pokona mój schemat - ponieważ chcę zamknąć bezczynne sesje, nawet jeśli użytkownik modyfikuje jakiś aktywny plik dziennika lub korzysta z niego watch.
Guss
1

Odpowiedź to 27 minut i 47 sekund

  1. domyślny format to MM: SS.
  2. 22: 29m oznacza 22 godziny i 29 minut
  3. 46,00 oznacza 46 sekund
  4. 4d oznacza 4 dni
Kexin Z
źródło