从crontab运行的脚本无法使用xvkbd或xdotool

时间:2015-03-24 01:28:31

标签: linux bash crontab

我想使用简单的bash脚本在2小时后自动刷新Firefox。 我有:

#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
xvkbd -window Firefox -text "\Cr";
exit 0

我希望使用crontab -e运行它。我添加了任务但没有任何反应。 当我用终端运行这个脚本时,一切都没有任何问题。 我也在我的简单脚本中尝试过xdotool。 我对firefox附加组件不感兴趣,例如"重新加载每个"或者"选项卡自动重新加载",因为每次重启firefox都会丢失附加组件的设置。 任何答案或想法将受到高度赞赏。 谢谢。

2 个答案:

答案 0 :(得分:1)

xvkbd包有些奇怪的东西。最后我发现了另一个解决方 我为Firefox安装了MozRepl插件。 它在mozrepl@hyperstruct.net.xpi目录中创建文件.mozilla。我浏览了defaults/preferences/mozrepl.js,发现pref("extensions.mozrepl.autoStart", false); “假”我改为“真”。即使我关闭浏览器,这也是Firefox自动运行加载项的方式。 我还写了简单的期望脚本:

#!/usr/bin/expect -f
set timeout 10
spawn nc localhost 4040
expect {
"repl>"                {send "BrowserReload(), repl.quit()\r"; exp_continue}
"lost connection"      {puts "ERROR: lost connection"}
"No route to host"     {puts "ERROR: no route to host"}
timeout                {puts "ERROR: timeout"}
}

我也创建了一个cron任务:

00 */2 * * * /root/script.exp

答案 1 :(得分:0)

crontab不是shell脚本。您应该通过运行crontab详细了解man 5 crontab的格式。如果这对您来说太令人生畏,您应该在Google上搜索无数的cron教程。例如,当您搜索“Vixie cron教程”时,第一个结果是Newbie: Intro to cron,经过简单检查,这对您的帮助很有帮助。

对于您的特定用例,请在crontab中添加以下内容。 (将其粘贴到由crontab -e打开的文本编辑器中,或将其保存到文件中然后执行crontab FILENAME。我更喜欢后一种方法。您可以查看当前{{1通过crontab进行操作。通过运行crontab -l了解有关crontab命令的更多信息。)

man 1 crontab

这样SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games 00 */2 * * * xvkbd -window Firefox -text "\Cr" 守护进程应该每两个小时运行命令crond,凌晨0:00,凌晨2:00,凌晨4:00等等。如果您更愿意这样做在凌晨1点,凌晨3点等,用

替换最后一行
xvkbd -window Firefox -text "\Cr"

第一个00 1-23/2 * * * xvkbd -window Firefox -text "\Cr" 是分钟,所以你也可以用30代替它:

00

然后命令在凌晨0:30,凌晨2:30等运行

与往常一样,请阅读手册页(30 */2 * * * xvkbd -window Firefox -text "\Cr" )或tutorial以获取更多信息。所以不是完整的教程。