30분 동안 활동이 없으면 XFCE4에서 로그아웃합니다.

30분 동안 활동이 없으면 XFCE4에서 로그아웃합니다.

여기에 작은 질문이 있습니다. 사양을 살펴보기 전에 저는 VMware, GUI Xfce4에서 Debian 10 가상 서버를 사용하고 있으며 사용자는 RDP를 통해 해당 서버에 터미널 액세스할 수 있습니다.

즉, 사용자가 30분 동안 화면에서 상호 작용하지 않으면 세션을 종료한다는 아이디어입니다.

이것을 알고 나면 두 가지 옵션이 있습니다 Xfce4-session-logout --logout.pkill -u $ user

내 문제는 모니터 0이 사용되고 있기 때문에 XRDP를 사용하여 비활성 시간(밀리초)을 display 0캡처 할 수 없다는 것입니다 . xprintidle이 문제를 해결하는 다른 방법을 아는 사람이 있습니까?

내가 덜 귀속적인 또 다른 방법은 그가 30분마다 세션을 종료한다는 것입니다. 이를 위해 crontab a 에서 정의했지만 pkill -u $ user닫을 때마다 pkill사용자가 GUI에서 세션으로 돌아올 때 시작되지 않습니다. 그래서 xfce4-session-logoutcrontab과 명령을 사용하려고 했지만 * / 30 * * * * / bin / sh xfce4-session-logout --logout작동하지 않았습니다.

누구든지 해결책이 있습니까?

답변1

Xfce4-session-logout --logoutXScreenSaver의 상태를 모니터링하고 30분 동안 활동이 없으면 호출하도록 스크립트를 설정할 수 있습니다 . 아마도 이 스크립트는 부팅이나 로그인 시 시작되어야 할 것입니다. man xscreensaver-command특히 -watch상태 정보에 대한 다음 예와 상태에 따라 사운드를 제어하는 ​​스크립트가 포함된 옵션을 살펴보세요 .

XScreenSaver 상태 정보의 예:

BLANK Fri Nov  5 01:57:22 1999
RUN 34
RUN 79
RUN 16
LOCK Fri Nov  5 01:57:22 1999
RUN 76
RUN 12
UNBLANK Fri Nov  5 02:05:59 1999

스크립트 예:

#!/usr/bin/perl

my $blanked = 0;
open (IN, "xscreensaver-command -watch |");
while (<IN>) {
    if (m/^(BLANK|LOCK)/) {
        if (!$blanked) {
            system "sound-off";
            $blanked = 1;
        }
    } elsif (m/^UNBLANK/) {
        system "sound-on";
        $blanked = 0;
    }
}

답변2

"사용자는 rdp를 통해 액세스합니다." 즉, 이 서버에서 xrdp를 실행하고 있습니까?

그런 다음 시간 초과를 설정할 수 있습니다/etc/xrdp/sessman.ini, 부분[회의]:

유휴 시간 제한=1800

30m=60x30초=1800초

관련 정보