systemctl reload ネットワークは Buster で動作しなくなりました。

systemctl reload ネットワークは Buster で動作しなくなりました。

Jesseの場合、コマンドは

sudo systemctl reload networking

苦情なく実行されます。バスターでは失敗しました。

ネットワークサービスを再ロードできません。ジョブタイプの再読み込みは組織ネットワークサービスには適用されません。

何をすべきですか?

(なぜこれが起こるのですか?)systemdドキュメントに簡単な答えが見つかりません。https://github.com/systemd/systemd/blob/master/NEWS#L474リロードが可能だと言われていますが、もう機能しないようです)

答え1

これがDebian 10で実行するのに意味のあるコマンドであると考える理由はなく、Debian 8では特に便利ではありません。

このサービスはsystemdの人々によって提供されないので、これはsystemd docoとは何の関係もありません。包装として提供されますifupdown

Debian 8 には明示的な単位はありませんnetworking.service。この名前のサービスは、自動的に生成される単位ラッパーです。ヴァン・スケレンブルクの/etc/init.d/networkingスクリプト。 van Smoorenburgrcスクリプトには、ジェネレータが許可する「再ロード」セマンティクスがありますが、単純な再起動とほとんど変わりません。

Debian 10クリアnetworking.serviceユニットただし、サービスプロセスが終了した後も引き続き実行されるようにマークされた単一のサービスです。意味のある「再読み込み」の意味はありません。ExecReloadサービス定義には何もなく、これを知らせるプロセスもありません。networking.service意味のある起動、停止、および再起動のみ可能です。 「再読み込み」されません。

答え2

欲しい

sudo systemctl restart networking

~からシステム(1):

リフレッシュモード...

コマンドラインにリストされているすべてのデバイスに設定を再ロードするように要求します。これは、systemdのユニット構成ファイルではなくサービス固有の構成を再ロードすることに注意してください。 ...つまり、Apacheの例では、apache.serviceシステム単位のファイルではなく、WebサーバーからApacheのhttpd.confを再ロードします。 ...

このオプションをサポートするサービスユニットの場合は、reloadこれを実装する必要がありますExecReload=

systemctl cat apache2.serviceこれが実際にサポートされていることがわかります。

[Service]
Type=forking
ExecStart=/usr/sbin/apachectl start
ExecStop=/usr/sbin/apachectl stop
ExecReload=/usr/sbin/apachectl graceful
...

また、systemctl cat networking.service以下ではありません。

[Service]
Type=oneshot
ExecStart=/sbin/ifup -a --read-environment
ExecStop=/sbin/ifdown -a --read-environment --exclude=lo
RemainAfterExit=true
...

私が持っているDebian 7(gasp)マシンを見ると、まだシステムがインストールされていないことがわかります。明らかに、サポートは次の/etc/init.d/networkingタスクのみを実行reloadします。ifdownifup

# /etc/init.d/networking (on Debian 7 wheezy)
...
reload)
    process_options

    log_action_begin_msg "Reloading network interfaces configuration"
    state=$(cat /run/network/ifstate)
    ifdown -a --exclude=lo $verbose || true
    if ifup --exclude=lo $state $verbose ; then
        log_action_end_msg $?
    else
        log_action_end_msg $?
    fi
    ;;
...

Debian 8(jessie)マシンはありませんが、すべてが導入されましたが、systemdまだ移行されていません。これを行うと、将来のリリースではこれらのinitスクリプトに依存しなくなりますsystemctl cat networkingExecReload=/etc/init.d/networking reload

関連情報