Bash脚本本身可以很好地执行,但不能使用cron
我打字 crontab-e 我的crontab看起来像Bash脚本本身可以很好地执行,但不能使用cron,bash,cron,ubuntu-14.04,crontab,cron-task,Bash,Cron,Ubuntu 14.04,Crontab,Cron Task,我打字 crontab-e 我的crontab看起来像 */1 * * * * /home/sara/Desktop/kioskscripts/reloadpage.sh >> /home/sara/Desktop/kioskscripts/logfile.log 日志文件在/kioskscript中创建,但仍为空 reloadpage.sh看起来像这样 #!/bin/bash sleep 5 /usr/bin/xdotool key F5 sh reloadpage.sh 按预
*/1 * * * * /home/sara/Desktop/kioskscripts/reloadpage.sh >> /home/sara/Desktop/kioskscripts/logfile.log
日志文件在/kioskscript中创建,但仍为空
reloadpage.sh看起来像这样
#!/bin/bash
sleep 5
/usr/bin/xdotool key F5
sh reloadpage.sh
按预期工作,模拟f5在执行5秒后被按下。由
cron
执行的程序没有活动窗口,因此您需要使用--window
选项明确指定要将击键发送到哪个窗口
您可以使用xdool getactivewindow
获取当前活动窗口的窗口id,然后在xdool
命令中使用该编号。或者,您可以使用带有各种选项的xdool search
来查找要将按键指向的窗口。阅读man xdool
,了解各种搜索选项。(您可以在单个命令中执行此操作:xdooolsearch--name Foo key F5
将F5发送到名称中带有Foo
的窗口。)
但这仅在指定的窗口接受事件时有效,而许多窗口不接受事件。由
cron
执行的程序没有活动窗口,因此您需要使用--window
选项明确指定要将击键发送到哪个窗口
您可以使用xdool getactivewindow
获取当前活动窗口的窗口id,然后在xdool
命令中使用该编号。或者,您可以使用带有各种选项的xdool search
来查找要将按键指向的窗口。阅读man xdool
,了解各种搜索选项。(您可以在单个命令中执行此操作:xdooolsearch--name Foo key F5
将F5发送到名称中带有Foo
的窗口。)
但是,只有当指定的窗口接受事件时,这才有效,而许多窗口不接受事件。为什么希望
xdool
将任何内容写入标准输出?或者,更好的说法是,您希望它写什么?我希望如果执行reloadpage.sh时抛出错误,该错误将被写入日志文件。不过,这一部分与让脚本每分钟正确执行一次没有多大关系。如果执行reloadpage.sh抛出错误,错误将写入stderr,而不是stdout。所以您需要使用2>
来捕获它。(但是,如果目标窗口未处理击键事件,我认为xdool
不会给您错误。)为什么希望xdool
将任何内容写入标准输出?或者,更好的说法是,您希望它写什么?我希望如果执行reloadpage.sh时抛出错误,该错误将被写入日志文件。不过,这一部分与让脚本每分钟正确执行一次没有多大关系。如果执行reloadpage.sh抛出错误,错误将写入stderr,而不是stdout。所以您需要使用2>
来捕获它。(但是,我不认为如果击键事件不是由目标窗口处理的,xdool
会给你一个错误。)Chrome只在焦点时接受击键,这对我来说是好的。ty,没有你就不会发现这个。@Brianhotp:你也可以将windowraise
添加到xdool命令中。但我认为这会对用户体验造成相当大的破坏:)Chrome只接受按键,但只有在聚焦时才接受,这对我来说是很好的。ty,没有你就不会发现这个。@Brianhotp:你也可以将windowraise
添加到xdool命令中。但我认为这会对用户体验造成相当大的破坏:)