首页 文章

Cron xdotool没有运行

提问于
浏览
2

我是新手使用crontab,我一直在努力获得一个简单的cron工作 . 我希望每隔1分钟按F5刷新Mozzila Firefox . 我正在使用xdotool按F5 . 我有脚本 /usr/local/bin/refresh.sh:

#!/bin/bash  
xdotool search --name "Mozilla Firefox" key F5

如果我在命令行中运行它,它工作正常 . 许可:

-rwxr-xr-x. 1 root root 89 15. čec 10.32 refresh.sh

crontab 我有:

*/1 * * * * cd /usr/local/bin && sh refresh.sh

但是由cron运行的脚本不起作用 . 谁能告诉我我做错了什么?

2 回答

  • 3

    xdotool命令是X11的自动化工具,它允许您模拟键盘/鼠标输入,但由于crontab是独立运行的,因此需要定义 DISPLAY 变量以指定要使用的X Window System显示服务器 . 通常,当你甚至有tty关联时,特别是当你通过 root 帐户运行命令时 .

    简而言之,您应该像以下一样定义您的工作:

    */1 * * * * DISPLAY=:0 /usr/local/bin/refresh.sh
    

    或者您可以在文件的开头定义变量(如果是Vixie cron) . 见:Variables in crontab?

    还要确保正在运行作业的用户已授予对所选X显示的访问权限 . 如果您需要授予访问权限,则需要通过 xhostsetfacl 命令分配权限并指定额外的 XAUTHORITY 变量,有关详细信息,请参阅:Xdotool using “DISPLAY=:0” .

  • 0

    为什么不

    */1 * * * * /usr/local/bin/refresh.sh
    

    这里不需要 cd /usr/local/bin ,因为你没有在 /usr/local/bin 中运行cron作业

    在下面的场景中你需要 cd

    */1 * * * * cd /usr/local/bin && ls >/var/somelog # wish to execute ls in a particular directory
    

相关问题