Shell
從 crontab 執行時 xdotool 返回不同的輸出
所以我正在製作一個腳本來監控我的應用程序使用情況。它通過每分鐘執行一次 cronjob 來做到這一點,並且相關的 cronjob 會檢查哪個視窗被聚焦並將其計數器增加 1。
程式碼的其他部分無關緊要,這是重要的部分:
focused=$(xdotool getwindowfocus) pid=$(xdotool getwindowpid $focused 2>/dev/null) [ "$pid" ] && pname="$(cat /proc/$pid/comm)" || pname="idling"
我測試了腳本,並從終端或執行它是
dmenu
每次都應該的。但是當我從 crontab 執行它時,每次都會導致結果。i3blocks``pname``echo $pname``idling
我檢查了我是否以我的使用者而不是 root 身份執行我的 crontab。
編輯:理想情況下,我想將我所有的 cronjobs 保存在個人 crontab 中,而不是
/etc/crontab
例如。
聽起來您根本沒有提到 DISPLAY 環境變數。使用 xdotool,您將使用 X11,因此變數 DISPLAY 應該與您在圖形會話的終端中執行它時的 DISPLAY 變數匹配:
echo $DISPLAY
編輯:在答案中添加 Quasimodo 的評論:
試試
export DISPLAY=:0
你的腳本。