树莓派3B+开机自启动Python程序

参考: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、 窗口系统启动后,自动运行自定义的程序(一般是应用主界面)

研究了下博主的方法始终没有成功,经过一番折腾原来是出现了权限的问题。下面展开如下方法:

  1. 实现自动登录
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 2>&1

原理:linux启动时,会读取inittab文件,执行其中的登录命令,以pi用户名自动登录

  1. 实现自动运行startx启动窗口系统
sudo nano /etc/rc.local

在文件尾部(在exit 0前)加上一行 su pi -c startx

这个命令的意思是,以pi用户的身份,执行 startx

重新启动即可

sudo reboot

这一次启动后,将直接以pi用户登入系统,并立即启动 startx

原理:linux启动时,用户登录后,会执行/etc/rc.local脚本文件,一般我们把要自动执行的命令放在该文件中

  1. 窗口系统启动后,自动运行自定义的程序的实现方法

在/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,设置成可读可写可执行方可成功

  1. 查看进程是否运行
ps -ef |grep python

或者:

pstree |grep python

你可能感兴趣的:(树莓派)