"DISPLAY=:0"을 사용하는 Xdotool이 Crontab에서 작동하지 않습니다.

"DISPLAY=:0"을 사용하는 Xdotool이 Crontab에서 작동하지 않습니다.

Xdotool 코드가 포함된 쉘 스크립트를 실행해야 합니다 /home/z/Desktop/tempo/run.sh. 나는 많은 것을 시도했지만 DISPLAY=:0결코 작동하지 않습니다.

다음 코드를 각각 시도했지만 작동하지 않습니다.

* * * * * export DISPLAY=:0 cd /home/z/Desktop/tempo; ./run.sh
* * * * * export DISPLAY=:0; cd /home/z/Desktop/tempo; ./run.sh
* * * * * export DISPLAY=:0 && cd /home/z/Desktop/tempo; ./run.sh
* * * * * DISPLAY=:0 cd /home/z/Desktop/tempo; ./run.sh
* * * * * DISPLAY=:0; cd /home/z/Desktop/tempo; ./run.sh
* * * * * DISPLAY=:0 && cd /home/z/Desktop/tempo; ./run.sh

직접 실행하면 작동하지 않습니다.

* * * * * export DISPLAY=:0 xdotool mousemove 20 20
* * * * * export DISPLAY=:0; xdotool mousemove 20 20
* * * * * export DISPLAY=:0 && xdotool mousemove 20 20
* * * * * DISPLAY=:0 xdotool mousemove 20 20
* * * * * DISPLAY=:0; xdotool mousemove 20 20
* * * * * DISPLAY=:0 && xdotool mousemove 20 20

위의 모든 코드 줄 위로 마우스가 움직이는 것을 항상 볼 수는 없습니다.

또한 잘못된 웹 사이트 URI 요청을 만들기 위해 Xdotool 코드를 테스트하고 로그를 살펴보았습니다. 불행히도 로그는 여전히 비어 있습니다.

답변1

 * * * * * DISPLAY=:0 xdotool mousemove 20 20

최소한 해당 모니터의 X 세션이 있는 사용자와 동일한 사용자의 crontab에 있는 한 작동해야 합니다.

다른 사용자가 마우스 이동을 수행하려면 해당 사용자에게 모니터에 대한 액세스 권한을 부여해야 합니다. 이는 그에게 표시할 MIT Magick 쿠키를 제공하고 그가 자신의 X 인증 저장소에 이를 설치하도록 하여 수행할 수 있습니다( xauth). 또는 다음을 사용하여 수행할 수 있습니다.

xhost +si:localuser:the-user

또는 다음과 같이 자신의 X 인증 저장소에 대한 액세스 권한을 부여하여 수행할 수 있습니다.

setfacl -m u:the-user:r ~/.Xauthority

crontab 줄을 다음과 같이 변경합니다.

* * * * * DISPLAY=:0 XAUTHORITY=~me/.Xauthority xdotool...

다른 사용자가 루트인 경우 이 setfacl단계는 필요하지 않지만 xdotool을 실행할 root이유가 없습니다. 자신의 사용자로 실행할 수 있습니다.

답변2

cronjobs에는 X 모니터는커녕 tty도 없습니다.

GUI 재생 입력을 테스트하려면(또는 합성 로드를 생성하려면) 찾아보세요. cron을 사용하려고 (남용)하지 마십시오.

관련 정보