最佳答案
我试图设置一个简单的 Systemd 计时器,以便每天午夜运行 bash 脚本。
systemctl --user status backup.service
失败并记录以下内容:
backup.service: Failed at step EXEC spawning /home/user/.scripts/backup.sh: No such file or directory.
backup.service: Main process exited, code=exited, status=203/EXEC
Failed to start backup.
backup.service: Unit entered failed state.
backup.service: Failed with result 'exit-code'.
我迷路了,因为文件和目录都存在。该脚本是可执行的,只是为了检查,我甚至将权限设置为777。
一些背景:
backup.timer
和 backup.service
单元文件位于 /home/user/.config/systemd/user
中。
backup.timer
已加载并激活,目前正在等待午夜。
看起来是这样的:
[Unit]
Description=Runs backup at 0000
[Timer]
OnCalendar=daily
Unit=backup.service
[Install]
WantedBy=multi-user.target
这里是 backup.service
:
[Unit]
Description=backup
[Service]
Type=oneshot
ExecStart=/home/user/.scripts/backup.sh
[Install]
WantedBy=multi-user.target
最后,这是 backup.sh
的一个解释:
#!/usr/env/bin bash
rsync -a --delete --quiet /home/user/directory/ /mnt/drive/directory-backup/
如果我自己执行,脚本运行得很好。
不确定这是否重要,但是我使用 fish
作为 shell (从.bashrc 开始)。
如果有用的话,我很乐意发布完整的剧本。