我正在尝试设置 crontab 来运行一个脚本,该脚本将从文件夹中挑选一个随机图像并在早上将其设置为我的壁纸,另一个脚本将在晚上执行同样的事情。
目标是拥有一张随机的白天和夜晚的壁纸。
按照以下说明操作后,一切工作正常这个帖子。
使用此代码:
#!/bin/bash
DIR="/path/to/wallpapers/"
PIC=$(ls $DIR/* | shuf -n1)
PID=$(pgrep gnome-session);
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-);
gsettings set org.gnome.desktop.background picture-uri "file://$PIC"
但是我的壁纸在一天左右后就停止更新了。我尝试设置 cron 每分钟运行一次此脚本以尝试解决问题(因为之前测试时这种方法有效),但它就是无法再更新我的壁纸了...
有人知道问题可能出在哪里吗?或者知道更好的方法/脚本吗?
这是完整的错误信息:
grep: /proc/1069: Is a directory
grep: 1501/environ: No such file or directory
(process:11303): dconf-CRITICAL **: 23:22:01.548: unable to create file '/home/user/.cache/dconf/user': Permission denied. dconf will not work properly.
(process:11303): dconf-CRITICAL **: 23:22:01.548: unable to create file '/home/user/.cache/dconf/user': Permission denied. dconf will not work properly.
(process:11303): dconf-CRITICAL **: 23:22:01.549: unable to create file '/home/user/.cache/dconf/user': Permission denied. dconf will not work properly.
(process:11303): dconf-WARNING **: 23:22:01.549: failed to commit changes to dconf: The given address is empty
提前致谢
-- 运行 Ubuntu 18.04
答案1
一个简单的解决方法:从用户 cron 运行
如果您的脚本由您的用户运行(从用户 crontab),那么您不需要处理 dbus 系统。
#!/bin/bash
DIR="/path/to/wallpapers/"
PIC=$(ls $DIR/* | shuf -n1)
/usr/bin/gsettings set org.gnome.desktop.background picture-uri "file://$PIC"