スクリプトはどのようにしてユーザーのアイドル時間を検出できますか?


33

Xセッションのユーザーがアイドル状態になっていた時間を、bashスクリプト内で確認したいと思います。

ユーザー自身がbashを使用する必要はありませんが、Xのみを使用します。たとえば、ユーザーがマウスを動かしただけであれば、「0秒間アイドル」という答えが返されます。5分以内にコンピューターに触れなかった場合、「300秒間のアイドル」が適切な答えとなります。

xautolockをすぐに使用しない理由は、いくつかの複雑な動作を実装できるようにするためです。たとえば、ユーザーが10分間アイドル状態の場合、中断しようとし、5分間以上アイドル状態の場合、シャットオフします(奇妙に聞こえますが、中断は常にここで機能するとは限りません...)

回答:


38

簡単な方法を見つけました。

トリックを行うxprintidleというプログラムがあります

アイドル時間(ミリ秒)を取得するのは簡単です

xprintidle

そしてインストールする

apt-get install xprintidle

sysadminの場合、リモートでも動作します

sshセッションから:

export DISPLAY=:0 && sudo -u john xprintidle

johnは、リモートマシンのXセッションにログインしたユーザーです。


4

ここから回答:

バッシュ

w | tr -s " " | cut -d" " -f1,5 | tail -n+3

シェルごとにユーザー名/アイドル時間のペアを提供します。基本的に、コマンドを使用してアイドル情報を取得できますw


これは、端末を介していないXとの相互作用をどのようにカウントしますか?たとえば、Firefox内でマウスを動かすとしましょう。ユーザーがマウスを動かしている場合、「アイドル状態ではない」または「0秒間アイドル状態」という答えを取得したいです
-josinalvo

@josinalvo wは、その特定の端末でのアイドル時間を提供するだけです。
ダン

3
そのアイドル時間は、実際には実行時間、プロセスの稼働時間(w出力のWHAT列)です。そのため、ユーザーがXセッションでどれだけアイドル状態になっていたかはわかりません。
ロッシュ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.