Shell

從 crontab 執行時 xdotool 返回不同的輸出

  • May 14, 2022

所以我正在製作一個腳本來監控我的應用程序使用情況。它通過每分鐘執行一次 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你的腳本。

引用自:https://unix.stackexchange.com/questions/702463