[英]Script run from crontab can't use xvkbd or xdotool
我想在2小時后使用簡單的bash腳本自動刷新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每次重新啟動都會丟失附加組件的設置。 任何答案或想法將不勝感激。 謝謝。
xvkbd軟件包有些奇怪。 終於我找到了另一個解決方案。 我為Firefox安裝了MozRepl插件。 它在.mozilla
目錄中創建文件mozrepl@hyperstruct.net.xpi
。 我瀏覽了defaults/preferences/mozrepl.js
,發現了pref("extensions.mozrepl.autoStart", false)
; “假”我改為“真”。 這是即使我關閉瀏覽器,Firefox也會自動運行加載項的方式。 我還編寫了簡單的Expect腳本:
#!/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
crontab
不是shell腳本。 您應該通過運行man 5 crontab
來閱讀有關crontab
格式的更多信息。 如果這對您來說似乎太艱巨,則應在Google上搜索大量的cron
教程。 例如,當您搜索“ Vixie cron教程”時,第一個結果是Newbie:cron簡介 ,經過簡要檢查,對您入門很有幫助。
對於您的特定用例,將以下內容放入crontab
。 (將其粘貼到crontab -e
打開的文本編輯器中,或者將其保存到文件中,然后執行crontab FILENAME
。我更喜歡后者。您可以通過執行crontab -l
來查看當前crontab
的內容。閱讀通過運行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
守護程序應該每兩個小時(分別在0:00 am,2:00 am,4:00 am等)每兩個小時運行一次xvkbd -window Firefox -text "\\Cr"
命令。如果您願意在1 :00 am、3:00am等,將最后一行替換為
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
)或教程以獲取更多信息。 SO並非完整的教程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.