次のタイマーを自動的に起動するには?これで、タイマーは私がこれを行うときにのみ機能しますsystemctl start while-test.timer
。それ以外の場合、タイマーを有効にしても自動的に起動しません。実行systemctl daemon-reload
または再起動後も同様です。
while-test .service
-------------------
[Unit]
Description=While loop test script
[Service]
Type=simple
ExecStart=/home/user/bash/while-test.sh
[Install]
WantedBy=default.target
そして
while-test .timer
----------------
[Unit]
Description=While loop test script timer
[Timer]
OnCalendar=Mon *-*-* 10:52:00
Unit=while-test.service
[Install]
WantedBy=default.service
答え1
これはOP質問の原因ではないかもしれませんが、今週私はまったく同じ問題を抱えていましたが、私の場合、システムがタイマーをロードした後に起動時にマウントされたドライブパーティションに実際のデバイスファイルが保存されたためです。それらに)シンボリックリンクを使用して)。
実際に私のシステムログをチェックすると(journalctl -bを使用して)、実際にはパーティションがロードタイマーの〜0.01秒以内にすぐにマウントされるように見えます。代わりに、タイマーをロードしようとしますが(ログに)ファイルが存在しないと文句を言います。
したがって、OPの場合と同様に、システムが起動して実行された後にタイマーを手動で起動できますが、期待どおり起動時に自動的に起動しません。
同じ問題の他のバリエーションと同様に、ログをチェックすると診断に役立つと予想されます。
このページの他の回答は、サービスとタイマーを有効にする手順を推論することがわかりました。タイマーがサービスを制御する必要があるときに通常のデーモンのように自動的にサービスを開始する効果がある可能性があるため、このステップが重複または混乱する可能性があることを示す他のスタック交換の答えがどこかにあります。
答え2
systemctl enable while-test.service
systemctl enable while-test.timer
sudoを使用して実行する必要があるかもしれません。これにより、起動時にサービスとタイマーがアクティブになります。有効になっていることを確認してください。
systemctl list-timers
これにより、次の実行時間、最後の実行時間、最後の実行時間、アクティブなサービスなどのステータス情報が表示されます。