30分間アクティビティがない場合は、XFCE4からログアウトします。

30分間アクティビティがない場合は、XFCE4からログアウトします。

ここに小さな質問があります。仕様を調べる前に、VMware、GUI Xfce4でDebian 10仮想サーバーを使用しており、ユーザーはRDPを介してそのサーバーにターミナルにアクセスできます。

つまり、ユーザーが30分間画面で対話しなかった場合、セッションを終了するというアイデアです。

これがわかったら、2つのオプションがあります Xfce4-session-logout --logoutpkill -u $ user

私の問題は、モニタ0が使用されているため、XRDPを使用して非アクティブ時間(ミリ秒)をdisplay 0キャプチャできないことです。xprintidleこの問題を解決する他の方法を知っている人はいますか?

私があまり帰属しないもう一つの方法は、彼が30分ごとにセッションを終了することです。これはcrontab aで定義しましたが、pkill -u $ user閉じるたびにpkillユーザーがGUIからセッションに戻ると起動しません。だからxfce4-session-logout私はcrontabとコマンドを使用しようとしましたが、うまく* / 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秒

関連情報