树莓派自动启动程序
我在树莓派上运行一个用Python写的游戏(PyGame)。
我已经按照很多网站上的说明设置了树莓派自动登录(这些都没问题),也设置了自动运行startx,但我卡在了如何让我的程序在图形界面加载后自动运行这一步。
很多人(在StackOverflow和其他地方)都提到过这个演示文稿:
http://www.slideshare.net/SeggySegaran/raspberry-pi-autostarting-a-python-program
我尝试了两种方法(把桌面文件放在autostart里,或者把命令放在rc.local里)。
我打开了一个终端窗口,复制粘贴了命令来确认没有拼写错误,代码可以运行……
sudo python /home/pi/valley.py
这个命令可以正常运行。那么有没有办法查看日志,找出程序为什么不启动呢?有没有更好的方法来实现我想要的功能?
4 个回答
你可以通过使用crontab让你的脚本在树莓派启动时自动运行。crontab就像一个时间表,里面列出了所有定时要执行的命令。
首先,你需要编辑crontab,输入以下命令: sudo crontab -e 然后,在里面添加以下这一行: @reboot python 你的脚本路径 &(&要放在行的最后,表示这个命令会在后台运行)。
保存你的脚本,然后重启你的系统。当系统启动时,你的脚本就会自动运行。
如果你是通过“startx”来启动X窗口系统的,你可以把你的游戏放在你的.xinitrc文件里。如果你的游戏程序叫“game”,并且在你的路径里,只需要这样做:
echo "game" >> ~/.xinitrc
这个方法也适用于其他命令。如果你想让命令在后台继续运行,可以加一个“&”。
这就是我启动窗口管理器、加载壁纸、启动合成器等等的方法。这个方法非常简单,之后也容易修改,而且可以做任何你在终端里能做的事情。
我让我的Python脚本在启动时运行,方法是这样的:
sudo nano /etc/xdg/lxsession/LXDE/autostart
这样做可以让你在LXDE桌面会话开始时添加一个要运行的程序(LXDE是Raspbian默认的图形界面,如果你在raspi-config中设置了的话)。
这里面可能会有像这样的条目:
@lxpanel --profile LXDE
@pcmanfm --desktop --profile LXDE
@xscreensaver -no-splash
只需要把你的脚本也加到这里面就可以了。
@lxpanel --profile LXDE
@pcmanfm --desktop --profile LXDE
@xscreensaver -no-splash
@python /home/pi/yourAwesomePyScriptHere.py
如果你的Python脚本使用了GPIO(通用输入输出接口),你需要以管理员身份运行它(使用sudo):
@sudo python /home/pi/yourGPIOScript.py
我想特别提醒一点:一定要提前测试你的脚本。也就是说,要用完整的路径运行,确保它能正常工作,试着找出可能的问题,确保它尽可能稳定。如果你的脚本有错误,而你把它放在启动项里,你在终端窗口是看不到这些错误的,但Python可能会在启动时卡在一个循环里,导致CPU占用过高。
另外,可以看看这个关于 RPi交流区的回答。