如何注销空闲用户?

如何注销空闲用户?

我有一些信息亭电脑,它们的工作方式与 Ubuntu 访客会话非常相似。信息亭用户主页上安装了一个联合文件系统,因此他们无法更改任何内容,但仍可以在机器上工作时保存文件(并使用 USB 密钥随身携带)。

用户有时会在离开工作站时,桌面上仍留有私人资料。因此,我希望他们在 10 分钟不活动后退出(退出时联合文件系统将被清空)。

是否存在现有解决方案,有任何想法吗(自动记录仅将用户从活动终端会话中注销)。

答案1

我对 感到失望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

答案2

我写了自己的脚本来做这件事。有一个工具叫打印空闲它会给你一个 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

我打开了 root 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

奇迹般有效。

相关内容