使用“DISPLAY=:0”的 Xdotool 在 Crontab 中不起作用

使用“DISPLAY=:0”的 Xdotool 在 Crontab 中不起作用

我需要运行包含 Xdotool 代码的 shell 脚本/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

我总是看不到鼠标在上面的每一行代码上移动。

我还测试了 Xdotool 代码以发出无效的网站 URI 请求并查看日志。遗憾的是日志仍然是空白的。

答案1

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

至少只要它位于与相应显示器上具有 X 会话的用户相同的用户的 crontab 中,就应该可以工作。

如果另一个用户要执行鼠标移动,您需要授予他访问您的显示器的权限。这可以通过给他 MIT Magick Cookie 供您显示并让他将其安装在他自己的 X auth 存储中(使用xauth)来完成,或者可以通过以下方式完成:

xhost +si:localuser:the-user

或者可以通过授予他访问您自己的 X auth 存储的权限来完成,例如,通过执行以下操作:

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

并将 crontab 行更改为:

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

如果其他用户是 root,则不需要该setfacl步骤,但我不会运行 xdotool as root,没有理由这样做。您可以以您自己的用户身份运行它。

答案2

cronjobs 甚至没有 tty,更不用说 X 显示器了。

如果您想测试 GUI 重放输入(或生成合成负载),请查找它。不要尝试(滥用)使用 cron。

相关内容