สคริปต์จะตรวจจับเวลาว่างของผู้ใช้ได้อย่างไร


33

ฉันต้องการตรวจสอบภายในสคริปต์ทุบตีว่าผู้ใช้ของเซสชัน X ไม่มีการใช้งานนานเท่าใด

ผู้ใช้เองไม่จำเป็นต้องใช้ bash แต่เป็นเพียง X ถ้าผู้ใช้เลื่อนเม้าส์ตัวอย่างคำตอบที่ดีคือ "ไม่ได้ใช้งานเป็นเวลา 0 วินาที" หากเขาไม่ได้สัมผัสคอมพิวเตอร์ใน 5 นาทีคำตอบที่ดีก็คือ "ว่าง 300 วินาที"

เหตุผลที่ไม่ใช้ xautolock ทันทีเพื่อให้สามารถใช้พฤติกรรมที่ซับซ้อนได้ ตัวอย่างเช่นหากผู้ใช้ไม่ได้ใช้งานเป็นเวลา 10 นาทีให้ลองระงับหากเขาไม่ได้ใช้งานนานกว่า 5 นาทีให้ปิดเครื่อง (ฉันรู้ว่ามันฟังดูแปลก แต่การระงับไม่ได้ทำงานที่นี่เสมอ ... )

คำตอบ:


38

เพิ่งค้นพบวิธีง่ายๆในการทำ

มีโปรแกรมที่เรียกว่า xprintidle ซึ่งทำหน้าที่หลอกลวง

การได้รับเวลาว่าง (เป็นมิลลิวินาที) นั้นง่ายเหมือน

xprintidle

และเพื่อติดตั้ง

apt-get install xprintidle

สำหรับระบบดูแลระบบมันยังทำงานได้จากระยะไกล

จากเซสชัน ssh :

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

โดยที่ john คือผู้ใช้ที่ล็อกอินเข้าสู่เซสชัน X บนเครื่องระยะไกล


4

ตอบจากที่นี่ :

ในทุบตี

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

ให้ชื่อผู้ใช้ / idletime คู่สำหรับแต่ละเชลล์ ดังนั้นโดยทั่วไปคุณสามารถรับข้อมูลว่างผ่านคำสั่งw


สิ่งนี้นับการโต้ตอบกับ X ที่ไม่ได้ผ่านเทอร์มินัลอย่างไร เช่นพูดการเคลื่อนไหวของเมาส์ใน firefox หากผู้ใช้เลื่อนเมาส์ฉันต้องการได้รับคำตอบ "ไม่ได้ใช้งาน" หรือ "ไม่ได้ใช้งานเป็นเวลา 0 วินาที"
josinalvo

@ josinalvo wให้เวลากับคุณในเทอร์มินัลนั้นโดยเฉพาะฉันคิดว่า
ด่าน

3
เวลาที่ไม่ได้ใช้งานนั้นจริง ๆ แล้วคือเวลาทำงาน, เวลาทำงานของกระบวนการ (คอลัมน์ WHAT ของเอาต์พุต w) ดังนั้นจึงไม่มีความคิดเกี่ยวกับระยะเวลาที่ผู้ใช้ไม่ได้ใช้งานในเซสชัน X ของเขา
rosch
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.