systemctl start foo.timer は、OnCalendar 基準がまだ満たされていない場合でも foo.service を起動します。

systemctl start foo.timer は、OnCalendar 基準がまだ満たされていない場合でも foo.service を起動します。

そのため、サービスユニット(一部のノードコードを実行する)とタイマーユニットサービスがあります。

[Unit]
Description=foo

[Service]
Type=oneshot
ExecStart=/home/ubuntu/services/foo/start.sh

時間制労働者

[Unit]
Description=foo timer 

[Timer]
OnBootSec=0min
OnCalendar=*-*-* 05:01:00 UTC 
Unit=foo.service 

[Install]
WantedBy=multi-user.target

私が理解しているように、systemctl start foo.timerタイマーデバイスは起動しますが、サービスデバイスはすぐに起動せず(再起動は不要です)、タイマーデバイスは起動しませんが、systemctl enable foo.timer システム起動時に起動します。

タイマーをすぐに起動したいので、電子を使用しました。それはタイマーを開始しますが、条件が満たされていなくてもfoo.serviceタイマーを開始するので、私を起動することもあります。OnCalendar当時もまだ正しく始まったOnCalendar(テスト中で、近い将来の時間を選んだ)。

私のユニットファイルにこの問題を引き起こすものがあるかどうか疑問に思います。タイマーを起動すると、サービスが開始されず、タイマーの条件が満たされている場合のみサービスが開始されると思います。

また、この方法でテストしましたが、system enable正しく機能します。私のfoo.timerシステムを再起動しました。タイマーは有効になっていますが、サービスはすぐには利用できません。時間が経つと、OnConditionサービスが開始されます。

ベストアンサー1

~からsystemd.timer(5):

タイマーが設定されている場合、またはタイマーデバイスがアクティブになってから経過すると、OnBootSec=タイマーOnStartupSec=はすぐに期限切れになり、設定されたデバイスが起動します。他のディレクティブで定義されたタイマーの場合はそうではありません。

タイマーユニットが設定されているため、OnBootSec=0min常にサービスユニットが直ちに起動します。

おすすめ記事