所以我基本上遇到了与其他问题相同的问题:通过 Crontab 运行 shell 脚本
我现在将使用 systemd.timer 运行我的 shell 脚本,但到目前为止它还没有起作用。
这是我的 background.timer 文件:
[Unit]
Description=Changes between backgrounds
[Timer]
OnUnitActiveSec=10s
OnBootSec=10s
Unit=background.service
[Install]
WantedBy=timers.target
还有我的 background.service 文件:
[Unit]
Description=Changes between backgrounds
[Service]
Type=oneshot
ExecStart=/home/seb/Bilder/Wallpaper/.background_skript/skript.sh
以及它应该运行的文件:
#!/bin/bash
night="$HOME/Bilder/Wallpaper/appa_night.jpg"
day="$HOME/Bilder/Wallpaper/appa_day.jpg"
H=$(date +%H)
if [[ '13' < $H && $H < '20' ]]
then
gsettings set org.gnome.desktop.background picture-uri-dark file:///"$day"
else
gsettings set org.gnome.desktop.background picture-uri-dark file:///"$night"
fi
我自己也无法从终端运行 bash 文件,而我的 crontab 在我另一个问题中进行了更改后也可以运行它。也许我必须在 systemd 中执行类似操作?
以下是我的 Crontab 文件的内容:
XDG_RUNTIME_DIR="/run/user/1000"
00 08 * * * systemd-run --user ~/Bilder/Wallpaper/.background_skript/skript.sh
00 20 * * * systemd-run --user ~/Bilder/Wallpaper/.background_skript/skript.sh
到目前为止,systemd.service 根本不运行 bash 文件,也不会更改背景。
答案1
不要直接调用脚本。在我看来,您遇到了权限问题。不要调用,而是 /path/to/script.sh
尝试使用以下方法推断 bash/bin/bash /path/to/script.sh
这也可能是你的 cron 问题