gitコマンドでsystemdサービスが失敗する

gitコマンドでsystemdサービスが失敗する

私は移行cronからsystemd非常に簡単なことを達成しようとしています。sync_org_gitデフォルトでは、特定のフォルダにCDを挿入していくつかのgit操作を実行する小さなbashスクリプトがあります。 gitコマンドは何かstdout(追跡されていないファイル、コミット後のフィードバックなど)を作成します。これはgitでは珍しいことではありませんが、systemctl --user start sync-org-git.timer操作が失敗したことを意味します。スクリプトまたはシステムファイルを変更する必要がありますか?

サービスとタイマーファイルは次のとおりです。

❯ 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.

しかし、実際にはログからシェルスクリプトの出力を見ることができます。

ベストアンサー1

コマンドがゼロ以外の戻りコードで終了すると、systemdはそれを実行失敗として扱います。-プレフィックス(例:)を追加して戻りコードを無視するか、追加の行を追加してExecStart=-/home/fbence/bin/sync_org_git戻りコードの意味を一覧表示できます。たとえば、次のようになります。

SuccessExitStatus=0 1 7

おすすめ記事