我需要运行包含 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
cron
jobs 甚至没有 tty,更不用说 X 显示器了。
如果您想测试 GUI 重放输入(或生成合成负载),请查找它。不要尝试(滥用)使用 cron。