私はcrontabの「より愚かな」版がほしいと思います。与えられた時間だけ実行され、一時停止後は追いつかない。つまり、crontabによってサービスがトリガーされる必要があり、システムが停止した場合、再開直後にサービスがトリガーされます。それが私が望んでいないことです。
私はsystemd.timerユニット(crontabの代わりに)とマシンが一時停止しようとしたときにタイマーユニットを無効にし、システムが再開されたときにタイマーユニットを再度有効にする対応する-sleep.serviceを書くことでこの問題を解決しました。先週末の最後の更新以降、突然crontabのように動作します。タイマー装置内部で指定された時間でなくても、タイマー装置の起動時にタイマー装置がターゲットを開始する。
ログを確認しましたが、-sleep.serviceデバイスが操作を実行し、タイマーデバイスを無効にしました。 (タイマーデバイスには無効と再アクティブ化の外観も表示されます。)しかし、前述したように、タイマーデバイスは「追いつく」ことを望まない。私はそれが与えられた時間だけそのユニットをトリガーし、他のものは何も実行したくありません!
とても感謝しています!
ドーム様こんにちは
# horcrux-sleep.service
[Unit]
Description=horcrux sleep hook
Before=sleep.target
Before=shutdown.target
StopWhenUnneeded=yes
RefuseManualStart=yes
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/systemctl stop horcrux.timer
ExecStop=/usr/bin/systemctl start horcrux.timer
[Install]
WantedBy=sleep.target
Also=horcrux.timer
# horcrux.timer
Jun 27 06:51:15 citadel systemd[1]: Stopped Schedule for backup.
[Unit]
Description=Schedule
[Timer]
OnCalendar=Mon *-*-* 20..21:00:00
OnCalendar=Tue..Thu *-*-* 17..21:00:00
OnCalendar=Fri *-*-* 17..23:00:00
OnCalendar=Sat *-*-* *:00:00
OnCalendar=Sun *-*-* 00..21:00:00
## Spätschicht
#OnCalendar=Mon..Wed,Fri *-*-* 7..11:00:00
## Frühschicht am Donnerstag
#OnCalendar=Thu *-*-* 13..16:00:00
## Frühschicht täglich
#OnCalendar=Mon..Fri *-*-* 7..11:00:00
## freie Tage
#OnCalendar=Mon..Fri 9..11,14..16,0..5:00:00
## Urlaub / Krankheit
#OnCalendar=*-*-* *:00:00
Persistent=1
AccuracySec=1sec
[Install]
WantedBy=timers.target
Also=horcrux-sleep.service
答え1
おそらく絶え間ない妨害によるものかもしれません。 https://www.freedesktop.org/software/systemd/man/systemd.timer.html#Percious=
永続性設定 = false
答え2
使用中に一時停止/再開時に無効にしてから再度有効にする必要はありませんPersistent=true
。
これはこのコマンドの完全なアイデアなので、再利用のために情報をディスクに保存します。
horcrux-sleep.service
したがって、直面している問題は、不要なシステムタイマーを使用したためです。
RandomizedDelaySec=
おそらく、タイマーセルの値をチェックして、ゼロ以外の値がsystemctl show
あるかどうかを確認する必要があります。この場合に設定できます0
。
の値と、OnClockChange=
OnTimezoneChange=
RemainAfterElapse=
(man systemd.timer
このガイドラインの説明を参照してください)
答え3
多くのテスト後もPersistent=boolean
作業は完了しませんでした。今頃、私は/etc/crontab
すべての時間がアナクロンの問題を解決するのに費やされ、上記で見ることができるシステム構成が発生したという事実を完全に忘れてしまったcrontab -e
ので、そのようなスレッドはまったくありませんでした。
ただし、ジョブを完了するためにジョブを追加しても/etc/crontab
エラーは発生しません。 「追いつく」は発生しません。