我正在尝试设置一个简单的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
用作外壳程序(从.bashrc开始)。
如果有帮助,我很乐意发布完整的脚本。
ls -l /home/user/.scripts/backup.sh
输出?backup.sh脚本的开头看起来很奇怪:#!/user/env/bin bash
可执行文件/user/env/bin
实际上存在吗?你确定你不是故意的/usr/bin/env
还是/home/user/bin/env
?