前一阵子用python编写了一个驱动I2C程序读写屏幕,输出IP的小程序,程序编好后需要树莓派使能程序开机自启动。其实这些方法对任何Linux系统都适用。
方法一:此方法的缺点是不进入默认pi的账号,甚至不开hdmi开启桌面的话,仅仅做远程服务器登录的时候不会自动启动
在 /home/pi/.config (ls -a)下找到名为autostart的文件夹,如果没有就新创建一个。在该文件夹下创建一个xxx.desktop文件,文件名自拟,后缀必须是desktop,文件内容如下:
[Desktop Entry]
Name=test
Comment=Python Program
Exec=sudo python /home/pi/test.py(这个py文件想开机启动的文件)
Icon=/home/pi/python_games/4row_black.png
Terminal=false
MultipleArgs=false
Type=Application
Categories=Application;Development;
StartupNotify=true
Name、Comment、Icon 可以自定,表示启动项的名称、备注和图标。Exec 表示调用的指令,和在终端输入运行脚本的指令格式一致。
最后 sudo reboot重启树莓派,test.py 就开机自动运行了。
方法二:此方法的缺点是不是systemd的系统不能用此办法
在树莓派终端命令行依次进行如何指令操作:
1、进入下面的文件路径:
cd /etc/systemd/system
2、创建一个***.service文件*(我这里以modbustest.service为例)*
sudo vi modbustest.service
3、在该文件内添加如下内容:
[Unit]
Description = test deamon
After = rc-local.service
[Service]
Type = simple
User = root
Group = root
WorkingDirectory = /home/pi (py文件所在目录)
ExecStart = /usr/bin/sudo python modbustest.py (绝对路径)
Restart = always
[Install]
WantedBy = multi-user.target
4、sudo systemctl enable modbustest.service
然后关机重启就可以实现python程序的自启动。
方法三:rc.locale办法,此方法适合任何linux单片机、linux系统,推荐
如果你要执行的程序路径为 /home/pi/run.py。在rc.local文件里Exit 0 前加入
sudo /usr/bin/python /home/pi/run.py
然后ctrl+o保存,退出。重新启动树莓派。
这个时候怎么看我们的程序是否自启动了呢。sudo systemctl status rc-local
可以查看运行状态来判断我们的程序是否正确运行。
方法四: /etc/crontab 定时列表法,适合于任何linux,不推荐
1.进入编辑配置
sudo nano /etc/crontab
2.在文件中加入如下语句:
0点0分重启
0 0 * * * root reboot
12点0分重启
0 12 * * * root reboot
每一项内容都包含六个部分,从左到右分别为:分钟、小时、月份中的哪一天、年份中的哪一月、星期中的哪一天,还有定时执行的命令。