zoukankan      html  css  js  c++  java
  • 树莓派ZeroW开机自动运行

    >> [目录] 数据远程采集 Step by Step


    树莓派型号:Zero W

    树莓派系统:Raspbian,2018-11-13-raspbian-stretch-lite.img

    Python 2.7.3



    之前调试的程序但都是手动运行的,现在要让它开机自动运行。

    网上搜到了3种方法:

    rc.local中添加启动代码按N个版本的文章试了几次都没成功
    作为服务启动测试OK
    通过桌面启动raspbian-stretch-lite系统不带没有桌面


    作为服务启动的意思是,开机启动一个服务,在这个服务程序中,调用python来执行程序文件,这样程序文件就可以做到开机自动运行了。

    先看一下系统已有的一些服务,进入/etc/init.d目录后列出所有内容:

    pi@raspberrypi:~ $ cd /etc/init.d

    pi@raspberrypi:/etc/init.d $ ls

    image

    可以随便开几个看一下里面大概是什么东西:

    pi@raspberrypi:/etc/init.d $ sudo nano ssh

    pi@raspberrypi:/etc/init.d $ sudo nano ntp


    准备好需要开机启动的程序 test_serial.py,文件保存在 /home/pi/test_serial.py

    /etc/init.d目录下新建服务的脚本test-serial,名字最好起特别一点,防止和系统已有的冲突。

    pi@raspberrypi:~ $ sudo nano /etc/init.d/test-serial

    在弹出的nano编辑器中,把下面这段复制进去,保存退出:

      1 #!/bin/bash
      2 # /etc/init.d/test-serial
      3 
      4 ### BEGIN INIT INFO
      5 # Provides: xxxx_test_serial
      6 # Required-Start: $remote_fs
      7 # Required-Stop: $remote_fs
      8 # Default-Start: 2 3 4 5
      9 # Default-Stop: 0 1 6
     10 # Short-Description: test serial functions
     11 # Descrption: This service is used to start test-serial service
     12 ### END INIT INFO
     13 
     14 case "$1" in
     15     start)
     16         echo "Start"
     17         python /home/pi/test_serial.py &
     18         ;;
     19     stop)
     20         echo "Stop"
     21         killall test_serial.py
     22         exit 1
     23         ;;
     24     *)
     25         echo "Usage:service test-serial start|stop"
     26         exit 1
     27         ;;
     28 esac
     29 exit 0

    image

    前面的几行注释也是有用的,再写新的服务时,按实际的名字和功能填一下。

    start)下面的 python /home/pi/test_serial.py & ,表示用python来运行/home/pi/test_serial.py这个文件,后面的 & 表示该程序可以在后台运行,这样不会影响其他服务的运行。


    切换到/etc/init.d目录,列出该目录下所有文件

    pi@raspberrypi:~ $ cd /etc/init.d

    pi@raspberrypi:/etc/init.d $ ls

    可以看到其他的服务文件都是绿色的,而test-serial是灰色的

    image

    在Linux系统中,不同的颜色代表不同的文件类型:

    蓝色目录
    绿色可执行文件
    红色压缩文件
    浅蓝色链接文件
    红色闪烁链接文件异常
    黄色设备文件
    灰色其它文件


    给test-serial文件增加执行权限,这样才能被执行调用:
    pi@raspberrypi:~ $ sudo chmod +x /etc/init.d/test-serial

    image

    接着将test-serial添加到系统的启动项中:
    pi@raspberrypi:~ $ sudo update-rc.d test-serial defaults

    启动test-serial
    pi@raspberrypi:~ $ sudo service test-serial start

    查看运行状态
    pi@raspberrypi:~ $ service test-serial status

    image


    重启树莓派,查看服务是否自动启动

    pi@raspberrypi:~ $ sudo shutdown -h now

    pi@raspberrypi:~ $ service test-serial status

    image


    连接串口助手,波特率19200,串口助手发送test,显示正常,说明test_serial.py开机自动运行配置成功了。

    image


    数据远程采集项目中,用到下面两个程序,采用上述的方法,用两个服务分别开机启动运行:

    xx_monitor.py 通讯、存储
    xx_upload.py上传数据文件


    扩展内容

    删除文件的执行权限

    pi@raspberrypi:~ $ sudo chmod -x /etc/init.d/test-serial

    删除系统启动项

    pi@raspberrypi:~ $ sudo update-rc.d -f test-serial remove


    如果修改了服务脚本,再次使用到服务中的指令时,会提示要重载,按提示输入:
    pi@raspberrypi:~ $ systemctl daemon-reload

    这时又提示需要root权限,但是之前还没有设置过root相关的东西。

    image

    设置root账户的的密码:

    pi@raspberrypi:~ $ sudo passwd root

    开通root账户:

    pi@raspberrypi:~ $ sudo passwd --unlock root

    再运行systemctl daemon-reload,提示成功

    pi@raspberrypi:~ $ systemctl daemon-reload

    image


  • 相关阅读:
    CNN(卷积神经网络)入门
    基于linux vim环境python代码自动补全
    Linux 基本bash命令
    基于pytorch的CNN、LSTM神经网络模型调参小结
    深度学习中Batch size对训练效果的影响
    argparse.ArgumentParser()用法解析
    大数据学习之Hive数据仓库 20
    centOS中安装MySQL超级方便简单的方法
    大数据学习之zookeeper案例节点动态上下线感知19
    大数据学习之zookeeper客户端的命令行及API操作18
  • 原文地址:https://www.cnblogs.com/hotwater99/p/12749966.html
Copyright © 2011-2022 走看看