所以我正在制作一个脚本来监视我的应用程序使用情况。它通过每分钟运行一个 cronjob 来实现这一点,相关的 cronjob 会检查哪个窗口被聚焦并将其计数器加 1。
代码的其他部分无关紧要,这是重要的部分:
focused=$(xdotool getwindowfocus)
pid=$(xdotool getwindowpid $focused 2>/dev/null)
[ "$pid" ] &&
pname="$(cat /proc/$pid/comm)" ||
pname="idling"
我测试了该脚本,并且每次都应该从dmenu
、 终端或i3blocks
运行它。pname
但是当我从 crontab 运行它时,最终每次echo $pname
都会产生结果。idling
我检查了我是否以我的用户身份而不是 root 身份运行 crontab。
编辑:理想情况下,我想将所有 cronjobs 保留在个人 crontab 中,而不是/etc/crontab
例如。
答案1
听起来您根本没有提到 DISPLAY 环境变量。使用 xdotool,您将使用 X11,因此变量 DISPLAY 应与您在图形会话的终端中运行时的 DISPLAY 变量相匹配:
echo $DISPLAY
编辑:在答案中添加卡西莫多的评论:
在你的脚本中尝试一下export DISPLAY=:0
。