私は移行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