我有一个如下脚本/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`