Как выйти из системы бездействующим пользователям?

У меня есть несколько ПК с киосками, которые работают почти так же, как гостевая сессия Ubuntu. В верхней части дома пользователей киоска установлена ​​объединенная файловая система, поэтому он ничего не может изменить, но все же может сохранять файлы во время работы на компьютере (и забирать их с собой с помощью USB-ключа).

Пользователи иногда оставляют станции с личными вещами, все еще на рабочем столе. Из-за этого я хочу, чтобы они вышли из системы, скажем, через 10 минут бездействия (файловая система объединения будет очищена при выходе из системы).

Любые идеи, если существует существующее решение (autolog только регистрирует пользователя из активных сеансов терминала).

2 ответа

Решение

Разочарован autologЯ тоже написал свой сценарий. Это на Github.

  • Он достаточно общий для нескольких пользователей, на X-сессиях и TTY.
  • Я включил задание Upstart, предполагая, что сценарий размещен в /usr/bin/idlekiller

Чтобы настроить это:

sudo apt-get install xprintidle
sudo wget https://raw.githubusercontent.com/murukeshm/scratchpad/master/linux/idlekiller/idlekiller.conf -O /etc/init/idlekiller.conf
sudo wget https://raw.githubusercontent.com/murukeshm/scratchpad/master/linux/idlekiller/idlekiller -O /usr/bin/idlekiller
sudo service idlekiller start

Я написал свой собственный сценарий для этого. Существует инструмент под названием xprintidle, который дает вам время простоя xsession. Вы должны установить это сначала

sudo apt-get install xprintidle

Затем создайте скрипт, например, в /root/bin/idle_check.sh:

#!/bin/sh

DISPLAY=:0
TIMEOUT=600000 # 10min = 10 * 60 * 1000

if [ $(xprintidle) -gt $TIMEOUT ]; then
    notify-send -t 60000 -i system-shutdown-panel-restart -u critical "WARNING" \
        "This machine looks idle and will be logged out in 60s.\nTo prevent this, move the mouse!"
    sleep 60;
    if [ $(xprintidle) -gt $TIMEOUT ]; then
        pkill -u matthias
    fi
fi

Я открыл корни crontab, чтобы проверять каждую минуту

sudo -i
crontab -e

и выглядеть так

SHELL=/bin/bash
PATH=/usr/local/bin:/usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11
*/1 * * * *   /root/bin/check_idle.sh > /dev/null 2>&1

Работает как шарм.

Другие вопросы по тегам