4

Так как моя станция Ubuntu была превращена в Многопользовательскую станцию (дети растут), мне нужен способ автоматического выхода из учетных записей после периода бездействия (полный выход из системы, а не только экран блокировки). Как я могу добиться этого в Ubuntu? Я попытался использовать autolog, но вставив строку:

name=*          idle=15 grace=60

не похоже на работу. Другой вариант - преобразовать этот ответ в Ubuntu-совместимый, но мне нужна помощь в том, что нужно изменить ...

1 ответ1

2

Вот как я решил свою проблему (это выйдет из режима простоя пользователя по крайней мере после 30 минут простоя):

Сначала создайте файл и поместите в него этот код (вам может потребоваться установить xprintidle перед началом):

#!/bin/bash
# Written by cz0 2010, adapted by dror 2013 
# Distributed under the terms of the GNU General Public License v2 

HALFHOUR=1800000
IDLETIME=`xprintidle`
QDBUS="/usr/bin/qdbus" 

if [ $IDLETIME -gt $HALFHOUR ]
then 
    logger timeout of $HALFHOUR expired. idle is $IDLETIME
    KDEPID=$(ps aux | grep 'startkde' | grep -v 'grep' | awk '{print $2}') 
    KDEUSER=$(ps u $KDEPID | grep 'startkde' | awk '{print $1}') 

# If the DBUS_SESSION_BUS_ADDRESS environment variable is not already set correctly 
# then set it by finding the environment file for the startkde process in proc and 
# parsing it to get get the correct setting. 

    if [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; then 
        ENVIRON_FILE=/proc/$(ps h --ppid $KDEPID -o pid | awk '{print $1}')/environ 
        CURRENT_DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS $ENVIRON_FILE | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//') 
        export DBUS_SESSION_BUS_ADDRESS=$CURRENT_DBUS_SESSION_BUS_ADDRESS
    fi 
    $QDBUS org.kde.ksmserver /KSMServer logout 1 0 2 
else
    logger timeout is $HALFHOUR not expired $IDLETIME 
fi

Теперь перейдите в /bin /

sudo cp myfile /bin/logoutonidle

Затем сделайте его исполняемым

sudo chmod +x /bin/logoutonidle

Далее запустите для пользователя, которого вы хотите выйти из системы автоматически (при необходимости запустите его для каждого пользователя):

crontab -e

и добавьте к нему следующую строку (это будет проверять cron каждые 15 минут, поэтому в худшем случае пользователь выйдет из системы после ~ 45 простоя):

*/15 * * * * export DISPLAY=:0 && /bin/logoutonidle 2>&1

Я хотел бы поблагодарить людей в этих темах Брайана и Йоханна за то, что они указали мне правильное направление.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .