systemd 服务因 git 命令而失败

systemd 服务因 git 命令而失败

我正在尝试从 切换到cronsystemd完成一件非常简单的事情。我有一个小的 bash 脚本sync_org_git,它基本上 cd-s 到特定的文件夹中,进行一些 git 操作。 git 命令会写入一些内容stdout(未跟踪的文件、提交后的反馈等),这对于 git 来说没有什么异常,但systemctl --user start sync-org-git.timer表示作业失败。我需要修改我的脚本或 systemd 文件吗?

这是服务和计时器文件:

❯ cat sync-org-git.service
[Unit]
Description=sync org to git


[Service]
ExecStart=/home/fbence/bin/sync_org_git

❯ cat sync-org-git.timer
[Unit]
Description=Sync org git timer
Requires=sync-org-git.service

[Timer]
OnBootSec=0min
OnCalendar=*:*:0/5
Unit=sync_org_git.service

[Install]
WantedBy=multi-user.target

更新

使用ExecStart=-/home/fbence/bin/sync_org_git

结果是 sync-org-git.timer: Refusing to start, unit sync_org_git.service to trigger not loaded.

但我实际上在日志中看到了 shell 脚本的输出。

答案1

如果您的命令以非零返回代码退出,则 systemd 会将其视为运行失败。您可以通过添加-前缀(如 )来忽略返回代码ExecStart=-/home/fbence/bin/sync_org_git,也可以添加额外的行来列出返回代码的含义,例如:

SuccessExitStatus=0 1 7

相关内容