![Systemd サービス/タイマー - タイマー付きのワンショット サービスが複数回実行され、「start-limit-hit」で失敗しました](https://rvso.com/image/168797/Systemd%20%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%2F%E3%82%BF%E3%82%A4%E3%83%9E%E3%83%BC%20-%20%E3%82%BF%E3%82%A4%E3%83%9E%E3%83%BC%E4%BB%98%E3%81%8D%E3%81%AE%E3%83%AF%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%20%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%8C%E8%A4%87%E6%95%B0%E5%9B%9E%E5%AE%9F%E8%A1%8C%E3%81%95%E3%82%8C%E3%80%81%E3%80%8Cstart-limit-hit%E3%80%8D%E3%81%A7%E5%A4%B1%E6%95%97%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F.png)
systemd.timer ユニットを介して、systemd.service として 5 分ごとにコマンド (unison) を開始したいと考えています。 '.service' ファイルだけでは正常に実行されます。 ただし、タイマー ユニットによって開始されると、複数回実行され、次のエラーで停止します:Start request repeated too quickly.
およびFailed with result 'start-limit-hit'
。 なぜでしょうか?
タイマー サービスは次のように開始しますsystemctl --user start service.timer
。
ファイルは次の場所にあります: $HOME/.config/systemd/user/
。
同期サービス
[Unit]
Description=Sync Service
[Service]
Type=oneshot
ExecStart=/bin/zsh -l -c "unison -batch %u"
ExecStartPost=/bin/zsh -l -c 'dunstify "sync ~"'
[Install]
WantedBy=graphical.target
同期タイマー
[Unit]
Description=Timer for Sync Service
[Timer]
OnCalendar=*-*-* *:0/5:*
AccuracySec=5s
[Install]
WantedBy=timers.target
unison コマンドは、パスワードで保護されたキーファイルを使用して、SSH 経由でネットワーク経由でサーバーに同期します。ssh-agent
インスタンスはユーザーによって実行されます。そのため、ログイン シェルを使用する必要がありますzsh -l -c "..."
。
答え1
記録のために:OnCalendar=*-*-* *:0/5:*
は単純に間違っています。OnCalendar=*-*-* *:0/5:00
複数の実行を停止します。