Tom*_*mas 4 shell cron centos crontab xdotool
我是使用 crontab 的新手,我一直在尝试获得一个简单的 cron 工作。我想每 1 分钟按 F5 来刷新 Mozzila Firefox。我正在使用 xdotool 按 F5。我有脚本/usr/local/bin/refresh.sh:
#!/bin/bash
xdotool search --name "Mozilla Firefox" key F5
Run Code Online (Sandbox Code Playgroud)
如果我在命令行中运行它,它工作正常。和许可:
-rwxr-xr-x. 1 root root 89 15. ?ec 10.32 refresh.sh
Run Code Online (Sandbox Code Playgroud)
在crontab我有:
*/1 * * * * cd /usr/local/bin && sh refresh.sh
Run Code Online (Sandbox Code Playgroud)
但是由 cron 运行的脚本不起作用。谁能告诉我我做错了什么?
该xdotool
命令是 X11 的自动化工具,它允许您模拟键盘/鼠标输入,但由于 crontab 是独立运行的,因此需要定义DISPLAY
变量来指定要使用的 X Window System 显示服务器。通常,当您登录到桌面时,会自动分配此变量,但 crontab 在隔离环境中运行作业(甚至没有关联的 tty),尤其是当您通过root
帐户运行命令时。
所以简而言之,你应该像这样定义你的工作:
*/1 * * * * DISPLAY=:0 /usr/local/bin/refresh.sh
Run Code Online (Sandbox Code Playgroud)
或者您可以在文件的开头定义变量(在 Vixie cron 的情况下)。请参阅:crontab 中的变量?
还要确保运行作业的用户已授予对所选 X 显示的访问权限。如果您需要授予访问权限,则需要通过xhost
和setfacl
命令分配权限并指定额外的XAUTHORITY
变量,更多详细信息请参见:Xdotool using “DISPLAY=:0”。
归档时间: |
|
查看次数: |
3445 次 |
最近记录: |