network-online.targetの後にsystemdサービスを開始しましたが、DNSはまだ利用できません。

network-online.targetの後にsystemdサービスを開始しましたが、DNSはまだ利用できません。

systemd起動時に起動したいがDNSが利用可能になった後にのみ起動したいプログラムがあります。

サービスファイルは次のように異なりますnetwork-online.target

$ cat  /etc/systemd/system/te-m-pi.service
[Unit]
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
WorkingDirectory=/opt/te-m-pi
ExecStart=/opt/te-m-pi/te-m-pi.py

[Install]
WantedBy=default.target

ただし、起動時に必要なホスト名の一部を解決できないため、すぐに終了します。

te-m-pi.py[399]: socket.gaierror: [Errno -2] Name or service not known
systemd[1]: te-m-pi.service: main process exited, code=exited, status=1/FAILURE
systemd[1]: Unit te-m-pi.service entered failed state.

Pythonファイルを編集してtime.sleep(10)最初に単純なファイルを挿入すると、10秒待ってから期待どおりに幸せになります。

明らかに始まったら、ネットワークではありません。しかし、ネットワークが実際に起動して設定された後にのみ起動されるようにnetwork-online.targetするにはどうすればよいですか?

私はsystemd 215-17 + deb8u7を使用してRaspbian 8 Jessieで実行しています。

ベストアンサー1

Ubuntu 20で同じ問題が発生し、非常に混乱した問題が発生しました(たとえば、NFS自動マウントがランダムに機能しないなど)。ネットワークは実際にはオンラインですが、DNSサポートはまだ利用できません。 DNSサポートを保証するには、エントリをsystemd-resolved.service追加してください。AfterWants

おすすめ記事