스크립트는 어떻게 사용자의 유휴 시간을 감지 할 수 있습니까?


33

bash 스크립트 내에서 X 세션의 사용자가 얼마나 오래 유휴 상태인지 확인하고 싶습니다.

예를 들어 사용자가 bash를 사용할 필요는 없지만 X 만 사용할 필요가 있습니다. 예를 들어 사용자가 마우스를 방금 움직 인 경우 "0 초 동안 유휴 상태"가됩니다. 그가 5 분 안에 컴퓨터를 건드리지 않으면 "300 초 동안 유휴"

xautolock을 바로 사용하지 않는 이유는 몇 가지 복잡한 동작을 구현할 수 있기 때문입니다. 예를 들어, 사용자가 10 분 동안 유휴 상태 인 경우 일시 중지를 시도하고 5 분 이상 유휴 상태 인 경우 종료합니다 (이상하게 들리지만 여기서는 일시 중단이 항상 작동하지는 않습니다 ...)

답변:


38

그것을하는 간단한 방법을 찾았습니다.

트릭을 수행하는 xprintidle이라는 프로그램이 있습니다

유휴 시간 (밀리 초)을 얻는 것은 다음과 같이 간단합니다.

xprintidle

설치

apt-get install xprintidle

sysadmins의 경우 원격으로도 작동합니다.

에서 SSH 세션 :

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

여기서 john은 원격 시스템에서 X 세션에 로그인 한 사용자입니다.


4

여기 에서 대답 하십시오 :

bash에서

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

각 쉘에 대한 사용자 이름 / 유휴 시간 쌍을 제공합니다. 기본적으로 명령을 통해 유휴 정보를 얻을 수 있습니다w


이것은 터미널을 통하지 않는 X와의 상호 작용을 어떻게 계산합니까? 파이어 폭스 내에서 마우스 움직임을 가정 해보십시오. 사용자가 마우스를 움직이면 "유휴 상태가 아님"또는 "0 초 동안 유휴 상태"라는 응답을 받고 싶습니다
josinalvo

@josinalvo w는 내가 생각하는 특정 터미널에서 유휴 시간을 제공합니다.
Dan

3
이 유휴 시간은 실제로 프로세스의 가동 시간 인 실행 시간입니다 (w 출력의 WHAT 열). 따라서 사용자가 X 세션에서 얼마나 오래 유휴 상태인지 알 수 없습니다.
rosch
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.