사용자가 유휴 상태가 된 후 몇 분이 지났는지 확인하는 방법은 무엇입니까?

사용자가 유휴 상태가 된 후 몇 분이 지났는지 확인하는 방법은 무엇입니까?

사용자가 몇 분 동안 유휴 상태인지 표시하는 스크립트를 작성하고 싶습니다. 키보드와 마우스의 마지막 터치 이후. 예:

#!/bin/bash
while true
do
 command_lines...
 ...
 sleep 60
 echo $var
done

결과:

컴퓨터/사용자가 1분 동안 유휴 상태입니다.

컴퓨터/사용자가 2분 동안 유휴 상태입니다.

...

컴퓨터/사용자가 5분 동안 유휴 상태입니다.

...

우리가 그렇게 할 수 있나요? Bash, Python 등에 있을 수 있습니다.

답변1

매뉴얼 페이지에서 "w" 명령이 도움이 될 것입니다:

w - 누가 로그온했는지, 무엇을 하고 있는지 보여줍니다.

# w | awk '{if (NR!=1) {print $1,$5 }}'
USER IDLE
root 0.00s

답변2

키보드와 마우스는 다중 사용자 시스템에서 명확한 개념이 아닙니다. 다중 사용자 시스템에서는 여러 X 서버가 시스템에서 실행되고, 일부는 하나 이상의 물리적 키보드나 마우스에 연결되거나 일부는 연결되지 않거나, 시스템에서 실행되는 터미널이 연결되는 원격 X 서버가 있을 수 있습니다. ssh를 통해 실행되는 bash 쉘과 "bash"가 사용자로부터 입력을 받을 수 있는 더 많은 방법...

"xprintidle"은 연결된 X 서버의 유휴 시간을 제공합니다(해당 X 서버는 로컬이거나 원격일 수 있으며 심지어 로컬일 수도 있으며 시스템에서 현재 활성 상태일 필요는 없습니다).

$TTY의 수정 시간은 단말기의 유휴 시간을 알려줍니다. stat -c %Y "$TTY"는 초 단위의 마지막 수정 시간이며, "$(date +%s)"(GNU 시스템의 경우)에서 뺄 수 있습니다.

관련 정보