xdotool은 crontab에서 실행될 때 다른 출력을 반환합니다.

xdotool은 crontab에서 실행될 때 다른 출력을 반환합니다.

그래서 저는 애플리케이션 사용량을 모니터링하는 스크립트를 만들고 있습니다. 매분마다 cronjob을 실행하여 어떤 창에 초점이 맞춰져 있는지 확인하고 카운터를 증가시킵니다.

나머지 코드는 중요하지 않습니다. 이것이 중요한 부분입니다.

focused=$(xdotool getwindowfocus)
pid=$(xdotool getwindowpid $focused 2>/dev/null)
[ "$pid" ] &&
    pname="$(cat /proc/$pid/comm)" ||
    pname="idling"

스크립트를 테스트했는데 dmenu, 터미널 또는 i3blocks. pname하지만 crontab에서 실행하면 echo $pname매번 결과가 생성됩니다.idling

루트가 아닌 사용자로 crontab을 실행하고 있는지 확인했습니다.

편집: 이상적으로는 모든 cronjob을 예를 들어 개인용 crontab에 보관하고 싶습니다 /etc/crontab.

답변1

DISPLAY 환경 변수를 전혀 언급하지 않은 것 같습니다. xdotool을 사용하면 X11을 사용하게 되므로 그래픽 세션의 터미널에서 실행할 때 DISPLAY 변수는 DISPLAY 변수와 일치해야 합니다.

echo $DISPLAY

편집: 답변에 Quasimodo의 의견을 추가합니다.

스크립트에서 시도해 보세요 export DISPLAY=:0.

관련 정보