systemdでネットワークが完全に立ち上がってからサービスを動かしたい場合のめもです。ありますよね、こういうケース。 で、Unitセクションにこんな感じで書くんですがこれだと上手く動かない場合があったりして困るわけです。
After=network.target
そんな時に使えるのがsystemd-networkd-wait-onlineです。これを使うと確実にネットワークの起動後にサービスを起動できるようにできます。 使い方は簡単で、systemd-networkdとsystemd-networkd-wait-onlineをenableにするだけです。ようは↓ですね。
# systemctl enable systemd-networkd # systemctl enable systemd-networkd-wait-online
基本的にこれで問題ないはずですが、もしこれで上手く動かない場合は.service側を修正すればイケると思います。うちのラズパイで動かしているproxyサーバのprivoxyさんが上記だけだと上手く動かなかったんですね。デスクトップでローカルに動かしているprivoxyサーバは上記だけで問題なかったんだけど・・・
修正前にsystemctl disable [service name]しておきましょう。そして、変更が終わったらenableですね。
修正と行っても下記のようにAfter=とWantedBy=の2箇所をnetwork-online.targetに変えるだけです。
[Unit] After=network-online.target [Service] Do something [Install] WantedBy=network-online.target
P.S.
systemd-networkdですが、ntpの代わりにsystemd-timesyncdを使う場合にもこれが必要になります。
プロのための Linuxシステム構築・運用技術 (Software Design plus)
- 作者: 中井悦司
- 出版社/メーカー: 技術評論社
- 発売日: 2010/12/22
- メディア: 大型本
- 購入: 21人 クリック: 411回
- この商品を含むブログ (38件) を見る