Bagaimana skrip dapat mendeteksi waktu idle pengguna?

33

Saya ingin memeriksa, di dalam skrip bash, berapa lama pengguna sesi X tidak digunakan.

Pengguna itu sendiri tidak harus menggunakan bash, tetapi hanya X. Jika pengguna hanya memindahkan mouse, misalnya, jawaban yang bagus adalah "idle for 0 seconds". Jika dia belum menyentuh komputer dalam 5 menit, jawaban yang bagus adalah "idle selama 300 detik"

Alasan untuk tidak menggunakan xautolock secara langsung adalah untuk dapat mengimplementasikan beberapa perilaku kompleks. Misalnya, jika pengguna menganggur selama 10 menit, coba tunda, jika ia menganggur selama lebih dari 5 menit, tutup (saya tahu itu terdengar aneh, tetapi penangguhan tidak selalu bekerja di sini ...)

josinalvo
sumber

Jawaban:

38

Baru saja menemukan cara sederhana untuk melakukannya.

Ada sebuah program bernama xprintidle yang berfungsi

mendapatkan waktu idle (dalam milidetik) semudah

xprintidle

dan untuk menginstal

apt-get install xprintidle

Untuk sysadmin, ini juga berfungsi dari jarak jauh

Dari sesi ssh :

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

di mana john adalah pengguna yang masuk ke sesi X pada mesin jarak jauh.

josinalvo
sumber
4

Jawaban dari sini :

Di bash

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

memberi Anda pasangan nama pengguna / idletime untuk setiap shell. Jadi pada dasarnya Anda bisa mendapatkan informasi idle melalui perintahw

Dan
sumber
bagaimana ini menghitung interaksi dengan X yang tidak melalui terminal? Seperti, katakan gerakan mouse di dalam firefox. Jika pengguna menggerakkan mouse, saya ingin mendapatkan jawaban "tidak menganggur", atau "menganggur selama 0 detik"
josinalvo
@ josinalvo whanya memberi Anda waktu idle di terminal tertentu saya pikir.
Dan
3
Waktu idle itu sebenarnya adalah waktu berjalan, waktu proses (kolom APA dari output w). Jadi tidak tahu berapa lama pengguna telah menganggur di sesi X-nya.
rosch