2016-07-15 87 views
2

我是使用crontab的新手,我一直試圖得到一個簡單的cron作業。 我想按F5每1分鐘刷新一次Mozzila Firefox。我正在使用xdotool來按F5鍵。 我有腳本/usr/local/bin/refresh.sh:Cron xdotool不運行

#!/bin/bash 
xdotool search --name "Mozilla Firefox" key F5 

如果我在命令行中運行它,它工作正常。和權限:

-rwxr-xr-x. 1 root root 89 15. čec 10.32 refresh.sh 

的crontab我有:

*/1 * * * * cd /usr/local/bin && sh refresh.sh 

但是腳本由cron行不通的運行。 誰能告訴我我做錯了什麼?

+0

你需要傳遞任何'DISPLAY'變量嗎?日誌中有什麼東西嗎? – kenorb

+0

是啊,我忘了地方Display =:0,thx你 – Tomas

回答

3

xdotool命令自動化工具X11,它允許您模擬鍵盤/鼠標輸入,但因爲crontab是r un獨立的,需要定義DISPLAY變量來指定要使用哪個X Window系統顯示服務器。通常當你登錄到桌面時,這個變量會自動分配,但是crontab在孤立的環境中運行作業(甚至沒有關聯tty),特別是當你通過root帳戶運行命令時。

因此,在短期,你應該做的定義你的工作,如:

*/1 * * * * DISPLAY=:0 /usr/local/bin/refresh.sh 

或者你可以在文件的開頭(在vixie cron在的情況下)定義變量。請參閱:Variables in crontab?

還要確保正在運行作業的用戶已授予訪問所選X顯示器的權限。如果您需要授予訪問權限,則需要通過xhostsetfacl命令分配權限,並指定額外的XAUTHORITY變量,請參閱:Xdotool using 「DISPLAY=:0」瞭解更多詳細信息。

0

爲什麼不

*/1 * * * * /usr/local/bin/refresh.sh 

cd /usr/local/bin你不是在/usr/local/bin

運行cron作業是沒有必要在這裏你需要cd在下面的情形

*/1 * * * * cd /usr/local/bin && ls >/var/somelog # wish to execute ls in a particular directory 
+0

你有權利,我有「test.log」在「/ usr/local/bin」輸出的refresh.sh – Tomas

+0

@Tomas這是否適合你? – sjsam

+0

是的,它適用於我 – Tomas