簡體   English   中英

從crontab運行的腳本不能使用xvkbd或xdotool

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM