来自 crontab 的脚本 运行 无法使用 xvkbd 或 xdotool
Script run from crontab can't use xvkbd or xdotool
我想使用简单的 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。
我对 "reload every" 或 "Tab auto reload" 这样的 firefox 附加组件不感兴趣,因为每次重新启动 firefox 都会丢失附加组件的设置。
任何答案或想法将不胜感激。
谢谢。
crontab
不是 shell 脚本。您应该通过 运行ning man 5 crontab
阅读有关 crontab
格式的更多信息。如果这对您来说太难了,您应该在 Google 上搜索无数 cron
教程。例如,当您搜索 "Vixie cron tutorial" 时,第一个结果是 Newbie: Intro to cron,经过简短的检查,这对您入门非常有帮助。
对于您的特定用例,请将以下内容放入 crontab
。 (要么粘贴到crontab -e
打开的文本编辑器中,要么保存到文件中,然后crontab FILENAME
。我更喜欢后一种方法。你可以查看你当前[=13]的内容=] 通过执行 crontab -l
。通过 运行ning man 1 crontab
阅读更多关于 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
守护程序应该 运行 命令 xvkbd -window Firefox -text "\Cr"
每两个小时,在 0:00 am,2:00 am,4:00 上午等。如果您希望在 1:00 上午、3:00 上午等时间进行,请将最后一行替换为
00 1-23/2 * * * xvkbd -window Firefox -text "\Cr"
第一个 00
是分钟,因此您也可以将其替换为 30:
30 */2 * * * xvkbd -window Firefox -text "\Cr"
然后命令是 运行 0:30 am,2:30 am,等等
与往常一样,阅读手册页 (man 5 crontab
) 或 tutorial 以获取更多信息。 SO 不适用于完整的教程。
xvkbd 包有些奇怪。最后我找到了另一个解决方案。
我为 Firefox 安装了 MozRepl 附加组件。
它在 .mozilla
目录中创建文件 mozrepl@hyperstruct.net.xpi
。我查看了 defaults/preferences/mozrepl.js
并找到了 pref("extensions.mozrepl.autoStart", false)
; "false"我改成"true"。这是 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
我想使用简单的 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。 我对 "reload every" 或 "Tab auto reload" 这样的 firefox 附加组件不感兴趣,因为每次重新启动 firefox 都会丢失附加组件的设置。 任何答案或想法将不胜感激。 谢谢。
crontab
不是 shell 脚本。您应该通过 运行ning man 5 crontab
阅读有关 crontab
格式的更多信息。如果这对您来说太难了,您应该在 Google 上搜索无数 cron
教程。例如,当您搜索 "Vixie cron tutorial" 时,第一个结果是 Newbie: Intro to cron,经过简短的检查,这对您入门非常有帮助。
对于您的特定用例,请将以下内容放入 crontab
。 (要么粘贴到crontab -e
打开的文本编辑器中,要么保存到文件中,然后crontab FILENAME
。我更喜欢后一种方法。你可以查看你当前[=13]的内容=] 通过执行 crontab -l
。通过 运行ning man 1 crontab
阅读更多关于 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
守护程序应该 运行 命令 xvkbd -window Firefox -text "\Cr"
每两个小时,在 0:00 am,2:00 am,4:00 上午等。如果您希望在 1:00 上午、3:00 上午等时间进行,请将最后一行替换为
00 1-23/2 * * * xvkbd -window Firefox -text "\Cr"
第一个 00
是分钟,因此您也可以将其替换为 30:
30 */2 * * * xvkbd -window Firefox -text "\Cr"
然后命令是 运行 0:30 am,2:30 am,等等
与往常一样,阅读手册页 (man 5 crontab
) 或 tutorial 以获取更多信息。 SO 不适用于完整的教程。
xvkbd 包有些奇怪。最后我找到了另一个解决方案。
我为 Firefox 安装了 MozRepl 附加组件。
它在 .mozilla
目录中创建文件 mozrepl@hyperstruct.net.xpi
。我查看了 defaults/preferences/mozrepl.js
并找到了 pref("extensions.mozrepl.autoStart", false)
; "false"我改成"true"。这是 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