"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

上記のすべてのコード行の上にマウスが動いていることを常に見ることはできません。

また、間違ったWebサイトURIリクエストを作成するためにXdotoolコードをテストしてログを調べました。残念ながら、ログはまだ空です。

ベストアンサー1

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

少なくとも、そのモニターの X セッションを持つユーザーと同じユーザーの crontab にある限り、操作する必要があります。

他のユーザーがマウスを移動するには、そのユーザーにモニターへのアクセス権を付与する必要があります。これは、彼に表示するMIT Magick Cookieを提供し、彼が自分のX認証リポジトリにそれをインストールすることによって行うことができます(xauth)。または、以下を使用して実行できます。

xhost +si:localuser:the-user

または、次のように独自のX認証ストアへのアクセス権を付与することで実行できます。

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

crontab 行を次のように変更します。

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

他のユーザーがrootの場合、このsetfaclステップは必要ありませんが、xdotoolを実行するroot理由はありません。自分のユーザーとして実行できます。

おすすめ記事