標準のRaspbianディストリビューションを実行するRaspberry PIがあります。終了シーケンスが終了したら実行する必要がある小さなCプログラムがあります。これは、GIPO出力の電源にいくつかのロジックハイパルスを送信してRaspberryボードの電源を切断するように指示することです。シャットダウンスクリプトは、PIが再起動または起動したときではなく、システムがシャットダウンしたときにのみ呼び出す必要があります。
私は成功せずにこれを行うためにupdate-rc.dを使用しようとしました。 update-rc.d ドキュメントを理解する方法は次のとおりです。
私の実行可能ファイル(
poweroff.bin
)を/ sbinにコピーし、必要な権限とLSBヘッダーを与えます。#!/bin/sh ### BEGIN INIT INFO # Provides: poweroff # Required-Start: # Required-Stop: $all # Default-Start: # Default-Stop: 0 # Short-Description: Power off. # Description: Send a power off signal to the PM board. # X-Interactive: false ### END INIT INFO /sbin/poweroff.bin exit 0
poweroff
/etc/init.d にスクリプトを生成します。- sudo update-rc.dコマンドを実行します
poweroff stop 99 0
。
これでスクリプトが生成されます。システムが停止している場合にのみ呼び出されます/etc/rc0.d/K99poweroff
。/sbin/poweroff.bin
3つの質問があります。
- 実行するたびに、名前付き
sudo update-rc.d poweroff stop 99 0 .
スクリプトのみが表示されます。/etc/rc0.d/K01poweroff
私は何が間違っていましたか? 99には何があったのでしょうか? - ランレベル0での起動と停止のオプションの重要性は何ですか?このスクリプトはK99またはS99でなければなりませんか?ランレベル0の起動スクリプトはほとんど意味がないようです。
- ランレベル0は終了時にのみ使用されますか?つまり、「shutdown -r now」を実行すると、コンピュータはランレベル0に送信され、再びランレベル6に戻りますか?
ベストアンサー1
依存関係ベースのメタ初期化システムは、要求された数字を無視します。提供されたコンテンツが間違っています!重要な手がかりは他のスクリプトから来ました。一度見てみましょうumountroot
:
### BEGIN INIT INFO
# Provides: umountroot
# Required-Start:
# Required-Stop:
# Should-Stop: halt reboot kexec
# Default-Start:
# Default-Stop: 0 6
# Short-Description: Mount the root filesystem read-only.
### END INIT INFO
この行をもう少し詳しく見てみましょうShould-Stop
。電力損失ではなく停止に依存することに注意してください。 Debian の一時停止スクリプトを見ると、これをはっきりと見ることができます。
### BEGIN INIT INFO
# Provides: halt
# Required-Start:
# Required-Stop:
# Default-Start:
# Default-Stop: 0
# Short-Description: Execute the halt command.
# Description:
### END INIT INFO
更新スクリプトはまだK99と呼ばれていませんが、非常に複雑な依存関係のセットがない限り、K15と同じ名前で呼び出されます。ただし、プロバイダー回線を停止するように変更すると機能します。