我建立了一个 cronjob,每十分钟从源下载一张新图片,并使用 feh 将其设置为壁纸。文件已下载,但壁纸没有变化。问题出在哪里?crontab -e
以用户身份执行命令,所以应该像我运行该行一样 - 顺便说一下,这有效。
这是脚本
#!/bin/sh
#Filename
file="space-"$(date +%x_%H:%M:%S)
#save it
wget http://rammb.cira.colostate.edu/ramsdis/online/images/latest_hi_res/himawari-8/full_disk_ahi_true_color.jpg -O /home/tim/Bilder/Wallpaper/$file -o /dev/null
#set background
feh --bg-max /home/tim/Bilder/Wallpaper/$file
这是crontab -e
给需要改变背景的用户(也就是我)的
*/10 * * * * /bin/sh /home/tim/Dokumente/Scripts/wallpaper.sh
在我的系统日志中我发现了这些行
Jan 31 21:40:01 LinuxMint CRON[18209]: (tim) CMD (/bin/sh /home/tim/Dokumente/Scripts/wallpaper.sh)
Jan 31 21:40:11 LinuxMint CRON[18204]: (CRON) info (No MTA installed, discarding output)
答案1
不幸的是,没有足够强调 cron get 启动的环境进程是非常简单来说,它只包含最重要的变量和值。您可以通过运行只包含以下内容的 shell 脚本来检查它
#!/bin/bash
set > /tmp/myset.txt
您将看到,那里没有设置运行任何基于 X 的应用程序所需的 DISPLAY 变量(并且除了极少数例外,我们使用的都是那种)。
你必须放一些类似的东西
export DISPLAY=:0.0
融入到你的脚本中并获得更好的机会。
答案2
根据说明完成 Gombai 的回答:
运行env | grep -i display
并检查 的值DISPLAY
。它可能是:0.0
,或:0
。
相应地修改你的 crontab:
*/10 * * * * DISPLAY=:0 /bin/sh /home/tim/Dokumente/Scripts/wallpaper.sh