すべての作業を行います。 /dev/initctl または /run/initctl を使用します。

すべての作業を行います。 /dev/initctl または /run/initctl を使用します。

私はRaspberry Pi UPSコードの仕事をしてきました。つまり、systemd(個人の好みと親しみやすさ)の代わりにsysv initを使用してください。私は特権スクリプト(おそらく/etc/rc.localの一部であるか、/etc/rc.localで実行)がinitにあることを知らせる方法を調べています。電源システムの電子不足。マニュアルページには、信号を送信するためにinit(8)「before」に単一の大文字(「F'ailing」、「O'k」、または厳密に言うと「L」ow)を書き込む方法が記載されていますが、/etc/powerstatus今は「then」があります。それは言う:/var/run/powerstatusinitSIGPWR

andの使用はお勧めできませんSIGPWR/etc/powerstatusinitと対話したい人は/run/initctl制御チャネルを使用する必要があります。詳細については、sysvinitパッケージのソースコードを参照してください。

私は見たことがない源泉gnu.orgでホストされていますが、これを使用する例を見たことはありません。小説物事を知らせるインターフェースinit

興味深いことに、Hydraはsystemdインターフェイスをコピーしようとしました。存在しないものと似たものがあると思いますが、実際にそれを使用するものが見つかりませんでした。そんなことありますか?たとえば、一部のUPS関連ソフトウェアが利用可能であれば幸いですが、そうではnutありません。

この質問には「Raspberry Pi」が記載されていますが、そのプラットフォームやそのプラットフォームで実行されているRaspbianなどのディストリビューションに限定されません。

次の質問と回答は、関連する詳細を入力するのに役立ちます。

編集:上記のQ&Aの少なくとも1つは、なぜ一部の人が/dev/initctlを持っているのか、他の人が/run/initctlを持っているのかを示唆しています。これは私が知らなかったものです(Debianの問題です)。

答え1

私はそれを使用すると信じていますrebootstrace次のいずれかを実行しますreboot

# strace -s 128 -f reboot

下のどこかに次が表示されます。

open("/dev/initctl", O_WRONLY)          = 3
write(3, "i\31\t\3\6\0\0\0\0\0\0\0\0\0\0\0INIT_HALT\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 384) = 384
close(3)

...

open("/dev/initctl", O_WRONLY)          = 3
write(3, "i\31\t\3\1\0\0\0006\0\0\0\5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 384) = 384
close(3)

答え2

Debian では、次のパッケージは /run/initctl を使用します: systemd、libvirt、sysvinit、refpolicy、gradm2。 (からhttps://codesearch.debian.net/)。

私はこれがinitにランレベルを変更するように指示する一般的な方法だと思います。

関連情報