ネットワークの準備ができるまで systemd ユニットを遅延させるにはどうすればいいですか?

ネットワークの準備ができるまで systemd ユニットを遅延させるにはどうすればいいですか?

cronから切り替えましたシステムd-cron私の Debian 不安定システムでは、毎日の「cron ジョブ」が頻繁に失敗します。これは、インターネットからデータベースを取得する mixmaster が実行され、ネットワークが起動する前に cron-daily.timer がトリガーされると、サスペンドから RAM への復帰後、mixmaster がサーバーにアクセスできなくなるためです。

Apr 24 11:02:23 run-parts[13608]: /usr/bin/mixmaster-update: Get failed for http://www.noreply.org/echolot/pgp-all.asc (500 Can't connect to www.noreply.org:80)
Apr 24 11:02:23 run-parts[13608]: Downloading of mlist and/or mixring failed (do you need a proxy?). Aborting.
Apr 24 11:02:23 su[13809]: pam_unix(su:session): session closed for user mixmaster
Apr 24 11:02:23 run-parts[13608]: run-parts: /etc/cron.daily/mixmaster exited with return code 22

ネットワークが起動するまでタイマーを遅らせることは可能ですか?

答え1

cron の代わりに systemd タイマーを使用します。

次に、systemd-unitで次のように指定します。After=network-online.target and Wants=network-online.target

答え2

cron ではなく systemd のタイマーを使用する価値があるかもしれません。そうすれば、ユニット内で何に依存するかを指定できるようになります。

https://wiki.archlinux.org/index.php/Systemd#依存関係の処理

答え3

私の設定cronジョブは1分ごとに実行されますが、インターネット接続がない場合には、次のような接続テストによって終了します。

nc -zw3 github.com 22 || exit 0

最終的にインターネット接続が確立されると、1 日に 1 回、anacron ジョブが実行されます。

関連情報