我这里有一个小问题,但在我们按照规范进行之前,我在 VMware、GUI Xfce4 上使用 Debian 10 虚拟服务器,并且用户通过 RDP 对其进行终端访问
也就是说,我的想法是,当用户 30 分钟没有在屏幕上进行交互时,他就会结束会话。
知道这一点我有两个选择:
Xfce4-session-logout --logout
和pkill -u $ user
我的问题是我无法使用display 0
withxprintidle
来捕获不活动的时间(以毫秒为单位),因为 XRDP 正在使用显示器 0。有谁知道解决这个问题的另一种方法?
另一种我发现不那么归因的方式是,他每隔 30 分钟就结束一次训练。为此,我在 crontab a 中定义了它pkill -u $ user
,但每次它关闭时pkill
,当用户从 GUI 返回会话时,它就不会启动。所以我去使用xfce4-session-logout
crontab 和命令* / 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