Systemd
systemd 服務因 git 命令而失敗
我正在嘗試從 to 切換
cron
到systemd
一個非常簡單的事情。我有一個小的 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 腳本的輸出。
如果您的命令以非零返回碼退出,則 systemd 將此視為執行失敗。您可以通過添加
-
前綴來忽略返回程式碼 inExecStart=-/home/fbence/bin/sync_org_git
,或者您可以添加額外的行列出返回程式碼的含義,例如:SuccessExitStatus=0 1 7