阻止Raspberry Pi在启动时运行程序

时间:2013-06-21 14:21:46

标签: linux raspberry-pi raspbian

我试图找出如何在启动时运行程序,但在意识到这个程序是一个无限循环之后,我无法退出,或者回到终端。当我给Pi功率时,它就在黑色背景上直接进入程序。我不记得我做了什么让它在启动时运行,我相信我只是在一个地方正上方添加了一些代码,然后说出"退出0"以及下面的内容" esac"。我不记得甚至让我在那里的命令。 (我是Pi和Python的新手,并且刚刚玩过。不成功。)

如果有人可以帮我删除这个程序或者让我能够编辑它,那么我可以修复那个很棒的无限循环。我宁愿不用一个新鲜的粗锉来完全覆盖SD卡。但就像我说我在启动时无法做任何事情,Ctrl + C也没有做任何事情,也没有按Ctrl + Alt + Delete。

编辑:当我将SD卡放入计算机时,我看到了11个文件的列表: 引导代码 CMDLINE 配置 修理 fixup_cd 问题 核心 kernel_cutdown kernel_emergency start.elf start_cd.elf

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

7 个答案:

答案 0 :(得分:12)

更新:看起来我没有想要中断正在运行的启动过程并停止脚本。

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


引导期间生成的进程存储在/etc/init.d/...的脚本中。这些脚本由init进程调用,这是Linux机器上的第一个进程(PID:1)

但init不会启动/etc/init.d中的所有脚本。这取决于运行级别。在debian系统上有7 run levels.

对于每个运行级别,都有一个名为like的文件夹:

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

存储来自/etc/init.d的脚本的软链接。

要删除每次启动时执行的脚本,您将删除该文件夹中的所有链接。通常在debian系统上,这是使用update-rc.d工具完成的:

update-rc.d NAME_OF_INIT_SCRIPT remove

您还应该查看文件/etc/rc.local

答案 1 :(得分:6)

Alt + PrintScn + k用于终止从rc.local运行的进程

答案 2 :(得分:3)

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

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

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

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

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

编辑罪魁祸首文件
sudo nano filename command 

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

然后我能够以正常方式修复错误。 它希望这可能对其他人有用。在我的情况下,它使我免于燃烧新的Raspbian而失去了我以前的所有工作。

答案 5 :(得分:0)

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

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

sudo nano /etc/rc.local

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

他们阻止此问题发生的方法是添加一个& (&符号)到行的末尾来分叉进程并将其作为一个单独的进程运行,如此

python /home/pi/myscript.py &

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

中指定

&符号允许命令在单独的进程中运行,并在进程运行时继续引导。

答案 6 :(得分:0)

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