web-dev-qa-db-ja.com

起動時にRaspberryPiがプログラムを実行しないようにする

起動時にプログラムを実行する方法を見つけようとしていましたが、このプログラムが無限ループであることに気付いた後、ターミナルから出たり戻ったりする方法がありません。私がPiパワーを与えると、それは黒い背景のプログラムに正しく行きます。起動時に実行するために何をしたかを正確に覚えていません。「exit0」と表示されているものの真上と「esac」と表示されているものの下にコードを追加しただけだと思います。そこにたどり着いたコマンドを覚えていません。 (私はPiに不慣れで、Pythonで、遊んでいます。失敗しました。)

誰かが私にこのプログラムを削除するか、それを編集できるようにしてくれるなら、私は素晴らしいだろう無限ループを修正することができます。 SDカードを新しいラズビアンで完全に上書きする必要はありません。しかし、私が言ったように、私は起動時に何もできません、そしてCtrl + Cは何もしませんし、Ctrl + Alt + Deleteもしません。

編集:SDカードをコンピューターに挿入すると、11個のファイルのリストが表示されます。bootcodecmdlineconfig fixup fixup_cd issue kernel kernel_cutdown kernel_emergency start.elf start_cd.elf

これらのどれも私には何の意味もありません...

6
user2506445

更新:実行中のブートプロセスを中断してスクリプトを停止することを取得できなかったようです。

最も簡単なアイデアは、piをオフにし、sdカードを取り外してデスクトップに接続し、スクリプトを(再)移動して再度起動することです。


起動中に生成されたプロセスは、スクリプトに/etc/init.d/...に保存されます。これらのスクリプトは、Linuxマシンの最初のプロセスであるinitプロセスによって呼び出されます(PID:1)

ただし、initは/etc/init.dのすべてのスクリプトを開始するわけではありません。これは実行レベルによって異なります。 Debianシステムには、7つの ランレベルがあります。

実行レベルごとに、次のようなフォルダがあります。

/etc/rc0.d
...
/rc6.d

/etc/init.dからのスクリプトへのソフトリンクが格納されています。

起動のたびにスクリプトが実行されないようにするには、そのフォルダーからすべてのリンクを削除します。通常、Debianシステムでは、これはupdate-rc.dツールを使用して行われます。

update-rc.d NAME_OF_INIT_SCRIPT remove

また、ファイル/etc/rc.localも確認する必要があります。

12
hek2mgl

Alt + PrintScn + kを使用して、rc.localから実行中にスタックしたプロセスを強制終了します

6
user1070356

Cmdline.txtを使用できます。まず、SDカードのcmdline.txtファイルを追加または変更します。 「init =/bin/sh」を追加してからPiを再起動すると、コマンドラインプロンプトが表示されます。 'Sudo nano /etc/rc.local'と入力してファイルを編集し、エラーを含む行をコメント化または削除します。その後、再起動します。

3
user2536152

私はまったく同じ問題を抱えていました。CTRL+ Cを使用してプロセスを終了できませんでした。上記のようにcmdline.txtを編集しましたが、piがキーボードに必要なUSBドライバーをロードしませんでした。

そのため、最終的にはSSH経由でpiにログインし、rc.localファイルをそのように変更しました。

1
Wout Standaert

この投稿の冒頭で説明したのと同じ問題がありました。私のPythonアプリは無限ループに陥りました。

私は試しました Ctrl+Alt+F2 ターミナルウィンドウを開かずにインターネットで見つかった多くの投稿で推奨されているコマンド。どうやら、他の多くの試行と再起動の後、アプリケーションのループが再起動するたびにターミナルウィンドウがちらっと見えました。携帯電話のスローモーションビデオを使用して画面の記録を開始するまで、何もキャッチできませんでした。はい、Linuxプロンプトのターミナルウィンドウがアクティブで、キーボード入力を受け入れることができました。

私がしたのは(ほとんど盲目的に)犯人ファイルを編集することだけでした

Sudo nano filename command 

そして、そのようなファイルを実際に破壊するためにいくつかの文字を入力し、それを保存して閉じ、Piを再起動します。起動の最後に、ファイルはエラーを生成しましたが、システムは動作する準備ができていました。

その後、通常の方法でバグを修正することができました。これが他の人に役立つことを願っています。私の場合、新しいRaspbianを燃やして、以前のすべての作業を失うことを免れました。

0
Rambar48

私はまったく同じ問題に巻き込まれました。幸い、sshを有効にしましたが、Raspbian Jessieではデフォルトで無効になっているようです。したがって、これがすべての場合に機能するとは限りません。

出口0は、現在連続モードで実行されているスクリプトに追加した/etc/rc.localの行です。 PuTTYとPiのIPアドレスを使用してPiにSSH接続できる場合は、

Sudo nano /etc/rc.local

ファイルの一番下までスクロールして問題のあるプログラムを削除し、Sudo再起動

この問題の発生を防ぐ方法は、行の最後に&(アンパサンド)を追加してプロセスをフォークし、そのように別のプロセスとして実行することです。

python /home/pi/myscript.py &

https://www.raspberrypi.org/documentation/linux/usage/rc-local.md で指定されているとおり

アンパサンドを使用すると、コマンドを別のプロセスで実行し、プロセスの実行中に起動を続行できます。

0
SudeepJD

私の場合、「Alt」と「F4」の組み合わせで動作し、現在のセッションを停止してログイン画面を開きます

0
Andrey Mazur