
そのため、サービスユニット(一部のノードコードを実行する)とタイマーユニットサービスがあります。
[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
常にサービスユニットが直ちに起動します。