参考:https://blog.csdn.net/c80486/article/details/8460325
参考:https://blog.csdn.net/A_lPha/article/details/53515943
参考:https://blog.csdn.net/la9998372/article/details/77886758?tdsourcetag=s_pcqq_aiomsg
如果把树莓派(raspberry pi)做成一个电器的话,一上电,必须支持几个动作
1、 自动登录
2、 自动运行startx启动窗口系统
3、 窗口系统启动后,自动运行自定义的程序(一般是应用主界面)
研究了下博主的方法始终没有成功,经过一番折腾原来是出现了权限的问题。下面展开如下方法:
- 实现自动登录
sudo nano /etc/inittab
向下滚动,找到行 1:2345:respawn:/sbin/getty 115200 tty1
注释掉这一行,修改为 #1:2345:respawn:/sbin/getty 115200 tty1
在该行下增加一行内容 1:2345:respawn:/bin/login -f pi tty1 </dev/tty1 >/dev/tty1 2>&1
原理:linux启动时,会读取inittab文件,执行其中的登录命令,以pi用户名自动登录
- 实现自动运行startx启动窗口系统
sudo nano /etc/rc.local
在文件尾部(在exit 0前)加上一行 su pi -c startx
这个命令的意思是,以pi用户的身份,执行 startx
重新启动即可
sudo reboot
这一次启动后,将直接以pi用户登入系统,并立即启动 startx
原理:linux启动时,用户登录后,会执行/etc/rc.local脚本文件,一般我们把要自动执行的命令放在该文件中
- 窗口系统启动后,自动运行自定义的程序的实现方法
在/home/pi/.config下找到 autostart(没有就新建一个)的文件夹
进入/home/pi/.config文件夹:
cd /home/pi/.config
查看autostart目录是否存在 :
ls -l
如果不存在,创建autostart目录;否则,跳过这一步:
mkdir autostart
在autostart文件夹内创建一个***.desktop结尾的文件(自拟文件名,注意后缀必须是.desktop)
touch my.desktop
编辑.desktop文件:
sudo nano my.desktop
输入以下文件内容:
[Desktop Entry]
Name=test
Comment=Python Program
Exec=python /home/pi/test.py
Icon=/home/pi/python_games/4row_black.png
Terminal=false
MultipleArgs=false
Type=Application
Categories=Application;Development;
StartupNotify=true
Name、Comment、Icon 可以自定,表示启动项的名称、备注和图标。Exec 表示调用的指令,和在终端输入运行脚本的指令格式一致。如果你的树莓派没有png图标,那么就和我一样,找到python_game文件夹,那里有几个简单的图标可以现成拿来使用。
在这里千万别以为sudo reboot就能程序自启动了,一定要设置程序的权限
比如我的程序是这样设置:sudo chmod 777 /home/pi/Desktop/baidu_api_face.py,设置成可读可写可执行方可成功
- 查看进程是否运行
ps -ef |grep python
或者:
pstree |grep python