通过 Systemd.timer 运行 shell 脚本

通过 Systemd.timer 运行 shell 脚本

所以我基本上遇到了与其他问题相同的问题:通过 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 问题

相关内容