30 分钟不活动后注销 XFCE4

30 分钟不活动后注销 XFCE4

我这里有一个小问题,但在我们按照规范进行之前,我在 VMware、GUI Xfce4 上使用 Debian 10 虚拟服务器,并且用户通过 RDP 对其进行终端访问

也就是说,我的想法是,当用户 30 分钟没有在屏幕上进行交互时,他就会结束会话。

知道这一点我有两个选择: Xfce4-session-logout --logoutpkill -u $ user

我的问题是我无法使用display 0withxprintidle来捕获不活动的时间(以毫秒为单位),因为 XRDP 正在使用显示器 0。有谁知道解决这个问题的另一种方法?

另一种我发现不那么归因的方式是,他每隔 30 分钟就结束一次训练。为此,我在 crontab a 中定义了它pkill -u $ user,但每次它关闭时pkill,当用户从 GUI 返回会话时,它就不会启动。所以我去使用xfce4-session-logoutcrontab 和命令* / 30 * * * * / bin / sh xfce4-session-logout --logout,但它不起作用。

有人有解决办法吗?

答案1

您也许可以使用设置的脚本来监视 XScreenSaver 的状态,并Xfce4-session-logout --logout在 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=60x30s=1800s

相关内容