Как прочитать столбец «IDLE» в выводе команды Linux «w»?

11

Я пытаюсь выяснить процесс, который отслеживает сеансы пользователей на удаленном сервере и предупреждает их, когда они слишком долго простаивают, что с командой Linux wвполне уместно.

Проблема в том, что wиспользуется 3 разных формата для указания времени простоя сеанса, и я не могу понять их правильно. Вывод wможет выглядеть следующим образом:

 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

Как видите, IDLE имеет разные форматы для каждого из пользователей:

  • «AA.BBs», очевидно, означает, что секунды AA и BB 1/100-ые секунды (46 секунд в случае июня) прошли с тех пор, как она в последний раз была активна на консоли.
  • «AA: BBm», вероятно, означает, что часы AA и BB прошли с тех пор, как Джон в последний раз активировал свою сессию.
  • «AA: BB» - это формат, который я не могу понять - как долго Дженнифер не проявляет активности на своей сессии?
Guss
источник

Ответы:

4

Без классификатора это означает MM: SS - то есть минуты и целые секунды. В качестве дополнительного бонуса есть четвертый формат, которого у вас нет в этом выводе - количество дней (NNdays) бездействия.

ombble
источник
10

Со страницы руководства

Стандартный формат: DDdays, HH: MMm, MM: SS или SS.CC, если время больше 2 дней, 1 часа или 1 минуты соответственно.

таким образом, ваш вывод - MM: SS (> 1 м и <1 час).

user9517
источник
1

Не совсем ответ на ваш вопрос, но более простой подход к проверке времени простоя сеансов входа в систему - посмотреть на / dev / pts. Время изменения файлов в нем отражает последний раз, когда сеанс входа получал данные.

Вы должны быть в состоянии выполнять там операции статистики (например, stat --format = "% n% X" *) и хранить все в секундах эпохи. Должен облегчить любые расчеты в любое время.

CJC
источник
1
Если вы обнаружите, что анализируете форматы времени, вы можете найти источник этой временной метки в эпоху времени.
CJC
1
Я кое-что прочитал об этом, но заметил, что время простоя, указанное в отчете w, отличается от отметок времени в /dev/ptsфайлах. есть идеи почему?
Гусс
В каком контексте это отличается? Я не смотрел на это внимательно, но «w» должно извлекать информацию откуда-то, а / dev / pts - очевидное место. Ах, может быть, если что-то случится на экране (/ dev / pts / * должно быть двусторонней связью); в этом случае пользователь будет бездействовать, но из-за того, что что-то происходит через устройство, например, / dev / pts / 0 будет обновлено.
CJC
Это вероятное объяснение, и оно разрушит мою схему - потому что я хочу завершить бездействующие сеансы, даже если пользователь отслеживает какой-то активный файл журнала или использует его watch.
Guss
1

Ответ 27 минут и 47 секунд

  1. по умолчанию используется формат MM: SS.
  2. 22: 29 м означает 22 часа и 29 минут
  3. 46,00 с означает 46 секунд
  4. 4d означает 4 дня
Кексин Z
источник