Я пытаюсь выяснить процесс, который отслеживает сеансы пользователей на удаленном сервере и предупреждает их, когда они слишком долго бездействуют, что с помощью команды 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 имеет разные форматы для каждого из пользователей:
Со страницы руководства
Стандартный формат - DDdays, HH: MMm, MM: SS или SS.CC, если время превышает 2 дня, 1 час или 1 минуту соответственно.
поэтому ваш результат - MM: SS (> 1 м и <1 час).
Без квалификатора это означает MM: SS, то есть минуты и целые секунды. В качестве дополнительного бонуса есть четвертый формат, которого у вас нет в этом выводе - количество дней (NN дней) бездействия.
Не совсем ответ на ваш вопрос, но более простой способ проверить время простоя сеансов входа в систему - это посмотреть / dev / pts. Время модификации файлов там отражает последний раз, когда сеанс входа в систему получил ввод.
Там вы должны иметь возможность выполнять статистические операции (например, stat --format = "% n% X" *) и сохранять все в секундах эпохи. Должен упростить расчеты в любое время.
Ответ - 27 минут 47 секунд.