私はRaspbian(Debianベース)OSでRaspberryPiに取り組んでいます。テストのために、このようなコマンドを/etc/rc.local
に追加しました。
python /home/pi/test.py
このスクリプトを開始しても問題なく動作します。しかし、問題は、スクリプトに次のような無限ループがあることを忘れたことです。
while True:
print 'Hello"
time.sleep(5)
このループはシステムの起動をブロックするため、スクリプトを編集するためにシステムに入ることができません。 Ctrl + Cはそれを殺すために機能しません。では、rc.local
から開始された連続プロセスを強制終了する方法はどうでしょうか。
コンソールからインタラクティブにプロセスを強制終了することはできませんが、起動中にプロセスが実行されないようにする方法は複数あります。
ブートパーティション(FAT)のcmdline.txt
の行にスペースで区切ってs
を追加します。起動後、/etc/rc.local
の名前を変更するか、実行不可にする(chmod a-x /etc/rc.local
)か、編集することができます。
init
の代わりにシェルで起動するinit=/bin/sh
の行にスペースで区切ってcmdline.txt
を追加します。これにより、ブートスクリプトの開始がバイパスされます。次に、上記と同じ/etc/rc.local
に対する対策を講じることができます。
SDカードを別のシステムに配置し、そこに/etc/rc.local
を使用してパーティションをマウントします。次に、上記と同じ/etc/rc.local
に対する対策を講じることができます。
再起動後に無限に再生される同じ種類のアプリケーションがあります。変更がある場合は、それを別のシステムにマウントして変更を加え、ボードに戻します。そのための最も簡単な方法です。