状態
次に接続されているコンピュータ(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
。