所以我正在制作一个脚本来监控我的应用程序使用情况。它通过每分钟运行一次 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 变量匹配:
编辑:在答案中添加 Quasimodo 的评论:
试试
export DISPLAY=:0
你的脚本。