Bir komut dosyası bir kullanıcının boşta kalma süresini nasıl algılayabilir?


33

Bir bash betiğinin içinde, bir X oturumunun kullanıcısının ne kadar süre boşta olduğunu kontrol etmek istiyorum.

Kullanıcının kendisi bash kullanmak zorunda değil, sadece X kullanmak zorunda. Kullanıcı fareyi yeni oynattığında, örneğin, iyi bir cevap "0 saniye boşta" olacaktır. Bilgisayara 5 dakika içinde dokunmadıysa, iyi bir cevap "300 saniye boşta" olacaktır.

Xautolock'u hemen kullanmama nedeni, bazı karmaşık davranışları uygulayabilmektir. Örneğin, kullanıcı 10 dakika boşta kalırsa, askıya almaya çalışın, eğer 5 dakika daha boşsa, kapatma (garip sesler biliyorum, ancak askıya alma her zaman burada çalışmaz ...)

Yanıtlar:


38

Sadece yapmanın basit bir yolunu buldum.

Hile yapan xprintidle adlı bir program var.

boşta kalma süresi (milisaniye cinsinden) almak

xprintidle

ve yüklemek

apt-get install xprintidle

Sysadmins için uzaktan da çalışır

Bir ssh oturumundan :

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

john uzaktaki makinedeki X oturumuna giriş yapmış olan kullanıcı.


4

Buradan cevap :

Bash içinde

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

size her kabuk için bir kullanıcı adı / idletime çifti verir. Yani temelde boş bilgi komut aracılığıyla alabilirsinizw


Bu, X ile bir uçbirimden geçmeyen etkileşimleri nasıl sayar? Mesela, bir firefox içerisinde bir fare hareketi söyleyin. Kullanıcı fareyi hareket
ettiriyorsa

@josinalvo wsadece sanırım o belirli terminalde boşta zaman verir.
Dan

3
Bu boşta kalma süresi aslında çalışma zamanıdır, işlemin çalışma süresidir (w çıktısının WHAT sütunu). Bu nedenle, kullanıcının X oturumunda ne kadar süre boşta olduğu hakkında hiçbir fikir vermez.
rosch
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.