Як скрипт може виявити час очікування користувача?


33

Я хочу перевірити, в баш-скрипті, як довго користувач X сесії простоює.

Сам користувач не повинен використовувати bash, а просто X. Якщо, наприклад, користувач просто перемістив мишу, хорошою відповіддю було б "простоювати 0 секунд". Якщо він не торкнувся комп’ютера за 5 хвилин, хорошою відповіддю було б "простоювати 300 секунд"

Причина не використовувати xautolock відразу - це можливість реалізувати деяку складну поведінку. Наприклад, якщо користувач працює в режимі очікування протягом 10 хвилин, спробуйте призупинити його, якщо він простоїть ще 5 хвилин, вимкніть (я знаю, це звучить дивно, але призупинення не завжди працює тут ...)

Відповіді:


38

Щойно знайшов простий спосіб це зробити.

Існує програма під назвою xprintidle, яка робить трюк

отримати час простою (в мілісекундах) так само просто

xprintidle

і встановити

apt-get install xprintidle

Для сисадмінів він також працює віддалено

З сеансу ssh :

export DISPLAY=:0 && sudo -u john xprintidle

де Джон - це користувач, який увійшов у сеанс X на віддаленій машині.


4

Відповідь звідси :

В баш

w | tr -s " " | cut -d" " -f1,5 | tail -n+3

дає вам ім’я користувача / пара простою для кожної оболонки. Таким чином, ви можете отримати непрацюючу інформацію за допомогою командиw


як це рахує взаємодії з X, які не проходять через термінал? Мовляв, скажіть рух миші всередині фаєрфоксу. Якщо користувач рухає мишкою, я хотів би отримати відповідь "не в режимі очікування" або "простоювати 0 секунд"
josinalvo

@josinalvo wпросто дає вам час простою в цьому конкретному терміналі, я думаю.
День

3
Цей час простою - це фактично час роботи, час безперебійного процесу (ЩО ТАКИ стовпець w-виводу). Таким чином, це не дає уявлення про те, як довго користувач простоював на своєму X сесії.
rosch
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.