2012-11-25 4 views
2

Linux 시스템에서 사용자 휴면을 감지하여 전원을 끄고 (꽤 머리가없는 아내와 상당히 비싼 전기 요금 ... :-).Linux에서 예약 된 작업에서 비활성을 감지하십시오.

스크립트를 (crontab에서) 예약해야하므로 X 기반 도구가 작동하지 않을 것입니다 ($ DISPLAY를 사용할 수 없음).

의견이 있으십니까?

"사용자 비 활동"업데이트

나는 사용자 입력 활동 (마우스와 키보드)를 의미한다.

+3

사용자가 사용하지 않음으로써 무엇을 의미합니까? 키보드/마우스 입력이 없습니까? 현재 큰 파일을 다운로드하는 것과 같이 프로세스를 실행중인 경우 어떻게됩니까? –

+0

비 활동을 적절히 정의하십시오. – ahmad

+0

예, 죄송합니다 ... 질문을 업데이트하여 사용자가 활동하지 않음을 의미하는 내용을 더 잘 지정합니다. – MarcoS

답변

2

Xautolock은 올바른 도구 일 수 있습니다. 명령을 실행해야하는 시간 (분)을 지정할 수 있습니다.

+0

하지만 '무인'모드로 실행하는 방법은 무엇입니까? (crontab에서?) – MarcoS

+1

한 번 시작하면 전체 세션이 시작됩니다. 이 작업은 init.d 나 @reboot 기반의 crontab 이벤트에서 수행 할 수 있습니다. – miho

1

화면 보호기가 실행 된 시간을 확인하는 것이 좋습니다.

#!/bin/bash 

screensaver="atlantis" 

t=$(
    # check for the screensaver 
    ps h -o start -C $screensaver   |\ 
    # hh:mm:ss -> seconds 
    awk -F: '{print $1"*3600+"$2"*60+"$3}' |\ 
    bc -l 2>/dev/null | sort -n | tail -1 
) 

if [ "$t" == "" ] 
then 
    exit 0 
fi 

n=$(
    date "+%T"        |\ 
    awk -F: '{print $1"*3600+"$2"*60+"$3}' |\ 
    bc -l 2>/dev/null 
) 

runtime=$(($n - $t)) 

if [ $runtime -gt 3600 ] || [ $runtime -lt 0 ] 
then 
    echo shutdown -h now 
fi 

실행 시간을 얻기 위해 그때부터 지금 뺀 시간 값을 필요로 사용. 내 경우, 프로세스 테이블에 나타나는 화면 보호기 프로그램은 선택한 화면 보호기에 따라 다릅니다. 따라서 위의 프로그램에서는 'atlantis'가 현재의 화면 보호기라고 가정합니다.

+0

답변이 마음에 듭니다. – MarcoS

+0

당신의 대답을 좋아합니다. 그러나, 내 시스템 (우분투 12.10)에서 내 스크린 세이버 프로세스 ("그놈 - 스크린 세이버")에 대한 시간은 항상 15 분부터 00:00:04입니다 ... 나는이 시스템을 테스트하고 있습니다 ... . – MarcoS

+0

추신 : 내 생각에 "[["[...이어야하는 경우] [... – MarcoS

관련 문제