我尝试通过 cron 中的 cron 设置壁纸更改/etc/crontab
,但失败了。
直接/在 cmd 之前设置 DISPLAY env,但仍然不起作用:
DISPLAY=:0.0
* * * * * ad env DISPLAY=:0.0 /usr/bin/awsetbg -a -r /home/ad/img/beauty/
* * * * * ad DISPLAY=:0.0 /usr/bin/awsetbg -a -r /home/ad/img/beauty/
* * * * * ad export DISPLAY=:0.0; /usr/bin/awsetbg -a -r /home/ad/img/beauty/
su - user -c "cmd"
工作:
* * * * * root su - ad -c "DISPLAY=:0.0 /usr/bin/awsetbg -a -r /home/ad/img/beauty/"
现在我使用用户的 crontab ( crontab -e
) 工作正常:
*/10 * * * * DISPLAY=:0.0 /usr/bin/awsetbg -a -r /home/ad/img/beauty/
我还需要设置什么吗?
克朗的env
:
MAILTO=root
SHELL=/bin/bash
USER=ad
PATH=/sbin:/bin:/usr/sbin:/usr/bin
PWD=/
SHLVL=1
HOME=/
LOGNAME=ad
DISPLAY=:0.0 # same result for DISPLAY=:0
_=/bin/env
vixie-cron 4.1-r1
在 Gentoo 上使用。
答案1
我猜它正在HOME=/
改变HOME=/home/ad
。
答案2
我完全忘记了这awsetbg
只是使用$HOME
变量的 shell 脚本。
awsetbg - awesome wrapper tool to set background
所以HOME
需要设置。
* * * * * ad DISPLAY=:0,HOME=/home/ad /usr/bin/awsetbg -a -r /home/ad/img/beauty/
如果您直接使用某个应用程序,它将仅与 DISPLAY env 一起使用:
* * * * * ad DISPLAY=:0 feh --bg-max --randomize /home/ad/img/beauty/