Làm cách nào để tự động đăng xuất người dùng khỏi Ubuntu


4

Vì trạm Ubuntu của tôi đã được chuyển thành Trạm đa người dùng (trẻ em lớn lên), tôi cần một cách để tự động đăng xuất tài khoản sau thời gian không hoạt động (tổng số lần tắt không chỉ là màn hình khóa). Làm thế nào tôi có thể đạt được điều này trong Ubuntu? Tôi đã thử sử dụng autolog nhưng chèn dòng:

name=*          idle=15 grace=60

dường như không làm việc Một lựa chọn khác là chuyển đổi câu trả lời này thành tương thích với Ubuntu nhưng tôi cần trợ giúp về những gì cần thay đổi ...

Câu trả lời:


2

Đây là cách tôi giải quyết vấn đề của mình (điều này sẽ đăng xuất một người dùng nhàn rỗi sau ít nhất 30 phút trong thời gian rảnh):

Trước tiên hãy tạo một tệp và đặt mã này vào đó (bạn có thể cần cài đặt xprintidle trước khi bắt đầu):

#!/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

Bây giờ cp nó thành / bin /

sudo cp myfile /bin/logoutonidle

Tiếp theo làm cho nó thực thi

sudo chmod +x /bin/logoutonidle

Lần chạy tiếp theo cho mỗi người dùng bạn muốn đăng xuất tự động (nếu cần thì hãy chạy nó trên mọi người dùng):

crontab -e

và thêm vào dòng sau (điều này sẽ giúp kiểm tra cron cứ sau 15 phút, vì vậy trường hợp xấu nhất là người dùng sẽ đăng xuất sau ~ 45 thời gian nhàn rỗi):

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

Tôi muốn cảm ơn những người trong các chủ đề này BryanJohanns đã chỉ cho tôi đi đúng hướng.


1
Bổ sung để tránh báo cáo lỗi: CODI = "không thể mở màn hình" nếu ["$ IDLETIME" -eq "$ CODI"]; sau đó thoát khỏi fi
Klaus-Peter
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.