xfconf-query 在 crontab 中不起作用

xfconf-query 在 crontab 中不起作用

我有一个如下脚本/usr/bin/disable-sleep

#!/bin/sh
xfconf-query -c xfce4-power-manager -p /xfce4-power-manager/blank-on-ac -s 0
now=$(date +"%D %T")
echo "disable sleep $now" >> ~/cron.log

然后我有如下的 cron 记录:

0 6 * * * /usr/bin/disable-sleep

所以早上我检查了~/cron.log并且看到了带有正确时间戳的日志,但是设置没有改变......

答案1

通过 运行的作业cron或启动脚本或systemd脚本不会在桌面上的同一运行时环境中运行。启动脚本以 运行root。您的任何PATH更改或其他环境变量设置都不会~/.bashrc自动传播到您的cron作业。例如,没有$DISPLAY,因此 GUI 程序需要特殊处理(阅读man xhost)。

cron人们可以在crontab文件 Read中为所有作业设置环境变量man 5 crontab

echo "=== id ===";id;echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias查看每个环境中的结果 。
一种简单的方法是将命令存储在bash脚本中,并从终端会话中执行该脚本,保存输出,然后从“其他”环境执行该脚本,保存输出。使用比较保存的输出diff

#!/bin/bash
echo "=== id ===";id
echo "=== set ===";set
echo "=== env ===";env | sort
echo "=== alias ===";alias`

相关内容