Cronjob 执行 `/usr/bin/python` 但不执行 `usr/bin/xrdb`

Cronjob 执行 `/usr/bin/python` 但不执行 `usr/bin/xrdb`

我正在尝试创建我的第一个 cron 作业。我对 bash 脚本也很陌生,尽管我确实了解一些 python。我对以下问题感到困惑:

这是我使用以下命令创建的 cronjob 文件crontab -e

*/1 * * * * /home/darren/.bash_scripts/urxvt_colors.sh

内容urxvt_colors.sh

#!/bin/bash

python  ~/.Py_Scripts/xr_random_colors.py
xrdb ~/.Xresources

这就是让我困惑的地方。所以 cron 作业的 python 部分python ~/.Py_Scripts/xr_random_colors.py每分钟都会执行一次。这个 python 脚本更改了我的文件中的配色方案~/.Xresources。我通过每分钟检查确认这确实发生。但xrdb ~/.Xresources不更新文件。

跑步which python节目/usr/bin/pythonwhich xrdb表演/usr/bin/xrdb。那么既然它们都是从 执行的/usr/bin,为什么只有 python 脚本执行呢?

另外,如果我./urxvt_colors.sh从终端手动运行脚本,那么它会按预期工作,python 脚本也会运行xrdb ~/.Xresources

这里发生了什么事?

答案1

尝试像这样改变你的脚本

#!/bin/bash

python  ~/.Py_Scripts/xr_random_colors.py && xrdb ~/.Xresources

我建议您使用文件的完整路径。

PS也许你需要在执行脚本时定义DISPLAY var

*/1 * * * * DISPLAY=:0 /home/darren/.bash_scripts/urxvt_colors.sh

相关内容