![xdotool은 crontab에서 실행될 때 다른 출력을 반환합니다.](https://linux55.com/image/205862/xdotool%EC%9D%80%20crontab%EC%97%90%EC%84%9C%20%EC%8B%A4%ED%96%89%EB%90%A0%20%EB%95%8C%20%EB%8B%A4%EB%A5%B8%20%EC%B6%9C%EB%A0%A5%EC%9D%84%20%EB%B0%98%ED%99%98%ED%95%A9%EB%8B%88%EB%8B%A4..png)
그래서 저는 애플리케이션 사용량을 모니터링하는 스크립트를 만들고 있습니다. 매분마다 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
.