8

我试图弄清楚如何在启动时运行一个程序,但是在意识到这个程序是一个无限循环之后,我没有办法离开,或者回到终端。当我给 Pi 供电时,它会直接进入黑色背景上的程序。我不记得我究竟做了什么让它在启动时运行,我相信我只是在“exit 0”上方和“esac”下方的地方添加了一些代码。我什至不记得让我到达那里的命令。(我是 Pi 和 Python 的新手,只是一直在玩……不成功。)

如果有人可以帮助我删除这个程序或让我能够编辑它,那么我可以修复无限循环,那会很棒。我宁愿不必用新的 raspbian 完全覆盖 SD 卡。但是就像我说的那样,我在启动时什么都做不了,Ctrl + C 也不做任何事情,Ctrl + Alt + Delete 也不做。

编辑:当我将 SD 卡放入计算机时,我看到 11 个文件的列表: bootcode cmdline config fixup fixup_cd issue kernel kernel_cutdown kernel_emergency start.elf start_cd.elf

这些对我来说都没有任何意义...

4

7 回答 7

13

更新:看起来我没有得到您想要中断正在运行的引导过程并停止脚本的信息。

最简单的想法是关闭 pi,拔下 sd 卡并将其插入桌面,(重新)移动脚本并再次启动。


引导期间产生的进程存储在 /etc/init.d/.... 这些脚本由 init 进程调用,这是 Linux 机器上的第一个进程 (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

于 2013-06-21T14:24:56.100 回答
9

Alt + PrintScn + k 杀死从 rc.local 运行的进程

于 2017-03-23T07:24:39.737 回答
5

您可以使用 cmdline.txt。首先,添加或修改 sd 卡上的 cmdline.txt 文件。添加“init=/bin/sh”,然后重新启动您的 Pi,您可以看到命令行提示符。键入“sudo nano /etc/rc.local”以编辑文件,并注释或删除包含错误的行。之后重新启动。

于 2013-06-30T08:57:14.817 回答
1

在我的情况下,组合“Alt”+“F4”,它会停止当前会话并打开登录屏幕

于 2018-08-03T08:34:37.677 回答
1

我遇到了完全相同的问题,无法使用 CTRL+C 退出该过程。我如上所述编辑了 cmdline.txt,但是 pi 没有为我的键盘加载必要的 USB 驱动程序。

所以最终我通过 SSH 登录到 pi,并以这种方式修改了我的 rc.local 文件。

于 2015-12-13T20:48:59.683 回答
0

我让自己陷入了完全相同的问题。幸运的是我启用了 ssh,显然这在 Raspbian Jessie 上默认是禁用的,所以这可能不适用于所有人。

出口 0 是 /etc/rc.local 中的行,您将在其中添加现在以连续模式运行的脚本。如果您可以使用 Putty 和 Pi 的 IP 地址 ssh 进入 Pi,那么

sudo nano /etc/rc.local

向下滚动到文件底部并删除有问题的程序,然后sudo reboot

他们防止此问题发生的方法是在行尾添加一个 & (与号)来分叉进程并将其作为一个单独的进程运行,就像这样

python /home/pi/myscript.py &

https://www.raspberrypi.org/documentation/linux/usage/rc-local.md中所述

与号允许命令在单独的进程中运行,并在进程运行的情况下继续引导。

于 2017-07-07T09:32:57.663 回答
0

我遇到了与本文开头所述相同的问题。我的 Python 应用程序陷入了无限循环。

我在没有打开任何终端窗口的情况下尝试了Internet 上许多帖子中推荐的 ++Ctrl命令。显然,经过许多其他试验和重新启动后,每次我的应用程序循环重新启动时,我都会看到一个终端窗口。在我开始使用手机的慢动作视频录制屏幕之前,不可能捕捉到任何东西,是的,带有 Linux 提示符的终端窗口处于活动状态,并且能够接受键盘输入。AltF2

我所做的只是(几乎是盲目地)用

sudo nano filename command 

并输入一些字符以实际损坏此类文件,保存并关闭它,重新启动 Pi。在引导结束时,该文件产生了错误,但系统仍准备好运行。

然后我能够以正常方式修复错误。它希望这对其他人有用。就我而言,它使我免于烧毁一个新的 Raspbian 并丢失我以前的所有工作。

于 2016-08-09T20:49:10.147 回答