私は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/powerstatus
init
SIGPWR
andの使用はお勧めできません
SIGPWR
。/etc/powerstatus
initと対話したい人は/run/initctl
制御チャネルを使用する必要があります。詳細については、sysvinitパッケージのソースコードを参照してください。
私は見たことがない源泉gnu.orgでホストされていますが、これを使用する例を見たことはありません。小説物事を知らせるインターフェースinit
。
興味深いことに、Hydraはsystemd
インターフェイスをコピーしようとしました。存在しないものと似たものがあると思いますが、実際にそれを使用するものが見つかりませんでした。そんなことありますか?たとえば、一部のUPS関連ソフトウェアが利用可能であれば幸いですが、そうではnut
ありません。
この質問には「Raspberry Pi」が記載されていますが、そのプラットフォームやそのプラットフォームで実行されているRaspbianなどのディストリビューションに限定されません。
次の質問と回答は、関連する詳細を入力するのに役立ちます。
編集:上記のQ&Aの少なくとも1つは、なぜ一部の人が/dev/initctlを持っているのか、他の人が/run/initctlを持っているのかを示唆しています。これは私が知らなかったものです(Debianの問題です)。
答え1
私はそれを使用すると信じていますreboot
。strace
次のいずれかを実行します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にランレベルを変更するように指示する一般的な方法だと思います。