systemdタイマーが次に実行されるタイミングを知る方法はありますか?


19

systemdタイマーをテストし、デフォルトのタイムアウトをオーバーライドしようとしていますが、成功していません。systemdに次にサービスを実行する時期を教えてもらう方法があるかどうか疑問に思っています。

通常ファイル(/lib/systemd/system/snapbackend.timer):

# Documentation available at:
# https://www.freedesktop.org/software/systemd/man/systemd.timer.html

[Unit]
Description=Run the snapbackend service once every 5 minutes.

[Timer]
# You must have an OnBootSec (or OnStartupSec) otherwise it does not auto-start
OnBootSec=5min
OnUnitActiveSec=5min
# The default accuracy is 1 minute. I'm not too sure that either way
# will affect us. I am thinking that since our computers will be
# permanently running, it probably won't be that inaccurate anyway.
# See also:
# http://stackoverflow.com/questions/39176514/is-it-correct-that-systemd-timer-accuracysec-parameter-make-the-ticks-slip
#AccuracySec=1

[Install]
WantedBy=timers.target

# vim: syntax=dosini

オーバーライドファイル(/etc/systemd/system/snapbackend.timer.d/override.conf):

# This file was auto-generated by snapmanager.cgi
# Feel free to do additional modifications here as
# snapmanager.cgi will be aware of them as expected.
[Timer]
OnUnitActiveSec=30min

次のコマンドを実行しましたが、タイマーはまだ5分ごとに1回刻みます。systemdにバグはありますか?

sudo systemctl stop snapbackend.timer
sudo systemctl daemon-reload
sudo systemctl start snapbackend.timer

だから、タイマーが次にカチカチ音をたてるときをどうやって知ることができますか?5分かどうかはすぐにわかるからです。または30分 しかし、systemctl status snapbackend.timerそれについては何も言っていません。現在使用されている遅延を通知するコマンドがあるかどうか疑問に思っています。

興味のある人には、サービスファイルもあります(/lib/systemd/system/snapbackend.service)、これはタイマーの刻みに影響を与えないはずだと思いますが...

# Documentation available at:
# https://www.freedesktop.org/software/systemd/man/systemd.service.html

[Unit]
Description=Snap! Websites snapbackend CRON daemon
After=snapbase.service snapcommunicator.service snapfirewall.service snaplock.service snapdbproxy.service

[Service]
# See also the snapbackend.timer file
Type=simple
WorkingDirectory=~
ProtectHome=true
NoNewPrivileges=true
ExecStart=/usr/bin/snapbackend
ExecStop=/usr/bin/snapstop --timeout 300 $MAINPID
User=snapwebsites
Group=snapwebsites
# No auto-restart, we use the timer to start once in a while
# We also want to make systemd think that exit(1) is fine
SuccessExitStatus=1
Nice=5
LimitNPROC=1000
# For developers and administrators to get console output
#StandardOutput=tty
#StandardError=tty
#TTYPath=/dev/console
# Enter a size to get a core dump in case of a crash
#LimitCORE=10G

[Install]
WantedBy=multi-user.target

# vim: syntax=dosini

1
出力はsystemctl list-timers役立ちますか?
phg 16

あ!その上で検索して、私はこのページで解決策を見つけました:bbs.archlinux.org/viewtopic.php?id=214989今すぐ答えを書きます。
アレクシスウィルケ

回答:


25

現在アクティブなタイマーの状態は、次を使用して表示できます systemctl list-timers

$ systemctl list-timers --all
NEXT                         LEFT     LAST                         PASSED       UNIT                         ACTIVATES
Wed 2016-12-14 08:06:15 CET  21h left Tue 2016-12-13 08:06:15 CET  2h 18min ago systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.service

1 timers listed.

7

@phgのコメントと回答から、回答のあるページを見つけました。タイマーは累積的であり、最初にリセットする必要があります。そうしないと、前のエントリが残ります。これはカレンダーに便利ですが、すべてのタイマーで同じように機能します。

タイマーを新しい値に変更する前にリセットするエントリが1つあると、期待どおりに機能します。

# This file was auto-generated by snapmanager.cgi
# Feel free to do additional modifications here as
# snapmanager.cgi will be aware of them as expected.
[Timer]
OnUnitActiveSec=
OnUnitActiveSec=30min

1

いいえ、タイマーが次に実行されるタイミングを正確に確認する方法はありません。systemd申し出systemctl list-timerssystemctl status something.timer、しかしそれらはの影響は表示されませんAccuracySec=し、時間をずらす可能性が他のディレクティブ。

AccuracySec=1h2つのサーバーに設定すると、両方のサーバーで同じタイマーがまったく同時に起動すると報告されますが、実際には最大1時間離れて起動する可能性があります。2つのランダム化されたタイマーが衝突する可能性があるかどうかを知りたい場合は、最終的に計算された実行時間を確認する方法はないようです。

あるオープンsystemdに問題リスト、タイマーの出力は、より正確な/あまり混乱作るためには。


タイマーに関する興味深い点。list-timersただし、から取得する情報は、タイマーの使用法が正しいかどうかを理解するのにすでに非常に役立ちます。
アレクシスウィルク

1
私の場合ではありません。双子ホストでもまったく同じ構成を使用したいのですが、AccuracySec =を使用して、両方が同時にメンテナンスを行わないようにします。タイマーが実際に各ホストで起動する時期を確認したいのですが、できません。
マークストスバーグ

あ。同様の問題があります。選択したマスター(投票システムを使用)を使用し、マスターはコンピューター1に「メンテナンスを行ってください」というメッセージを送信します。コンピューター1が完了すると、新しいステータスをマスターに報告します。これらのコンピューターの1つはもちろんマスターになりますが、メンテナンスループを実行するコードは実際のメンテナンスとは別にする必要があります。留意すべき問題が1つあります。クラスターがかなり大きくなる場合は、時間がかかり、一部のコンピューターが長時間更新されないほど長い可能性があることに注意してください。
アレクシスウィルク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.