状態

状態

状態

次に接続されているコンピュータ(Ubuntu 14.04を実行)ネットワーク接続コンピュータ自体の電源を制御する装置です。

特定の情報を受け取った後、signal Aコンピュータは〜しなければならないsignal Bこのネットワークデバイスにコマンドを送信すると、何よりもコンピュータの電源が切れます。

質問

signal B停電による損傷を最小限に抑えるために、いつ接続されたデバイスに送信する必要がありますか?

signal A終了シーケンスのどこかにsendを使用して終了シーケンスをトリガできるとしますsignal B。しかし、実際にいつ送るべきですか?

私の考えでは、/etc/rc0.d以下のようになります。

K98signalB # Actually sends signalB to cut power
K99networking # Renamed from K01networking, since I need to keep networking alive

答え1

Linuxだとしましょう

私は数年前に同様のことをしました。私が答えることができない質問は、適切な時間にネットワークを引き続き使用できるかどうかです。

実際に接続を解除するには、SystemDまたはsysvinitに接続するのではなく、カーネルモードを使用してカーネルに直接接続してみる必要があります。

このトピックを検索すると、ここでいくつかの情報が見つかりました。Linuxカーネルのシャットダウンの内部はどのように機能しますか?

これにより、ここにカーネルコードが表示されました。 https://elixir.bootlin.com/linux/v5.0.5/source/arch/arm64/kernel/process.c#L136

void machine_power_off(void)
{
    local_irq_disable();
    smp_send_stop();
    if (pm_power_off)
        pm_power_off();
}

これを正しく行うには、ネットワーク経由で電源スイッチと通信する機能を含むカーネルモジュールを作成し、関数ポインタにその機能を登録する必要がありますpm_power_off


シャットダウンのトリガーは、システムによって異なる場合があります。最も簡単な方法は、おそらくsutdownまたは同じ既存のコマンドラインプログラムを呼び出すことですpoweroff

関連情報