2013-04-23 45 views
2

我添加了一個cron作業來執行一個依賴於wmctrl的python腳本。這項工作將無法正確執行,並且我已經將此追溯到cron作業似乎無法使用/查找wmctrl的事實。cron作業無法找到wmctrl

我有一個定期任務添加到我的標籤如下:

* * * * * /home/tim/wmctrl -h > /home/tim/log.txt 

但結果log.txt文件是空的。這個命令在命令行中正常工作。

我的cron ENV如下:

HOME=/home/tim 
LOGNAME=tim 
PATH=/usr/bin:/bin 
SHELL=/bin/sh 
PWD=/home/tim 

wmctrl/usr/bin/

發現我已經嘗試過其他普通的Python scrips和應用,這一切似乎是工作的罰款。

任何幫助或建議將不勝感激。

+0

我懷疑這是不是'cron'找不到'wmctrl',而是'wmctrl'不必你'DISPLAY'訪問和其他變量可以使其與其他需要的流程進行交流,以實現您要求的目標。 'cron'作業在一個相當有限的用戶環境中運行。 – twalberg 2013-04-23 14:31:40

+0

嘗試在'/ home/tim/wmctrl'之前添加腳本的解釋器:類似'/ bin/sh/home/tim/wmctrl' – fedorqui 2013-04-23 15:22:24

回答

2

你可以試試這個:

* * * * * export DISPLAY=:0 && /home/tim/wmctrl -h > /home/tim/log.txt 
+0

...並希望'DISPLAY =:0'始終是正確的,這是一個虛幻的希望,但如果偶爾的小故障是可以忍受的,例如在你的個人工作站上,可能工作得很好。 – tripleee 2014-01-10 06:59:35

+0

這裏可能會有一些解釋。 Cron作業是'cron'守護進程的直接子節點,無法知道是否有X會話,如果有,哪一個是你的。例如,如果您未登錄,或者如果您有多個X會話,則這不會達到您想要的效果。 – tripleee 2014-01-10 07:01:29

+0

'出口'是多餘的;只要說'DISPLAY =:0/home/tim/wmctrl -h>/home/tim/log.txt'。你真的打算每分鐘覆蓋一次這個文件嗎? – tripleee 2014-01-10 07:02:57