8

起動時にプログラムを実行する方法を理解しようとしていましたが、このプログラムが無限ループであることに気付いた後、端末から出たり戻ったりする方法がありません。Pi に電源を入れると、すぐに黒い背景のプログラムに移動します。起動時に実行するために何をしたか正確には覚えていません。「exit 0」と書かれたもののすぐ上と「esac」と書かれたもののすぐ下にコードを追加しただけだと思います。そこにたどり着いたコマンドさえ覚えていません。(私は Pi と Python を初めて使用し、遊んでいるだけです..失敗しました。)

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

編集: SD カードをコンピューターに挿入すると、11 個のファイルのリストが表示されます。

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

4

7 に答える 7

13

更新:実行中のブート プロセスを中断してスクリプトを停止するように指示されていないようです。

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


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

しかし、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

于 2013-06-21T14:24:56.100 に答える
5

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

于 2013-06-30T08:57:14.817 に答える
1

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

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

于 2015-12-13T20:48:59.683 に答える
0

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

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

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

sudo nano filename command 

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

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

于 2016-08-09T20:49:10.147 に答える
0

私はまったく同じ問題で立ち往生しました。幸いなことに、私は ssh を有効にしていましたが、Raspbian Jessie ではデフォルトで無効になっているようです。

exit 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で指定されているとおり

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

于 2017-07-07T09:32:57.663 に答える