我想通过 systemd.timer 单元每 5 分钟以 systemd.service 形式启动一个命令 (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
用户正在运行一个实例。这就是我必须使用登录 shell 的原因:zsh -l -c "..."
。
答案1
记录在案:OnCalendar=*-*-* *:0/5:*
这完全是错误的。OnCalendar=*-*-* *:0/5:00
确实停止了多次执行。