zoukankan      html  css  js  c++  java
  • 开机启动项

    https://blog.csdn.net/feixuedongji/article/details/79891735

    超级强调:

    1自启动很有可能找不到对应路径,里面使用的每一个和路径有关系的,最好用绝对路径。例如python脚本中引用了某个图片,用的是相对路径,在开机自启动中就可能找不到报错,导致脚本开机执行失败。

    2 随桌面启动的模式,不建议。

    注意:这个方法除了依赖桌面之外,如果开启了多个桌面则会导致自定义的程序多次启动。比如系统启动桌面会调用一次testboot.sh脚本,如果再用远程桌面登录到树莓派,脚本会再执行一次。

    1制作测试脚本

    首先我们需要制作一个脚本来测试自启动是否有效。在终端下输入并回车新建脚本文件testboot.sh

    gedit testboot.sh
    

      

     (注意脚本路径要一致)

    testboot.sh文件内容如下:

       (自行修改要注意路径)

    #!/bin/sh
    #创建TXT 一次即可
    touch /home/pi/testboot.txt
    
    #给与执行权限 一次即可
    chmod 777 /home/pi/testboot.txt
    
    #TXT插入一句话-调试用
    #echo "hello pi~" >> /home/pi/testboot.txt
    
    #延迟5秒执行
    #sleep 5
    
    #执行自定义python脚本 为了防止找不到python用的是绝对路径
    /usr/bin/python /home/pi/Desktop/video/main.py
    
    #TXT插入一句话-调试用
    #echo "hello pi end~" >> /home/pi/testboot.txt
    

      

    测试脚本将打印字符串到文件中。按ctrl+o保存文件,再按ctrl+x退出编辑器。

    给脚本文件添加执行权限:

    sudo chmod -R 777 testboot.sh
    

      测试一下脚本功能:

     ./testboot.sh
    

     执行正常的话会在当前目录(pi)生成一个testboot.txt的文本文件。显示文件内容:

     

    方法一:将程序作为服务启动

    在/etc/init.d/目录下新建一个服务脚本文件。在终端输入并回车

    sudo gedit /etc/init.d/testboot
    

     

    在空白文件中输入以下内容:

    #!/bin/sh
    
    #/etc/init.d/testboot
    
    ### BEGIN INIT INFO
    
    # Provides:testboot
    
    # Required-Start:$remote_fs $syslog
    
    # Required-Stop:$remote_fs $syslog
    
    # Default-Start:2 3 4 5
    
    # Default-Stop:0 1 6
    
    # Short-Description: testboot
    
    # Description: This service is used to start my applaction
    
    ### END INIT INFO
    
    case "$1" in
    
         start)
    
         echo "start your app here."
    
         su pi -c "exec ~/testboot.sh"
    
         ;;
    
         stop)
    
         echo "stop your app here."
    
         ;;
    
         *)
    
         echo "Usage: service testboot start|stop"
    
         exit 1
    
         ;;
    
    esac
    
    exit 0
    

     1要执行的脚本就是我们前面创建的

    exec ~/testboot.sh
    

    2 记得修改pi账户

      su pi -c "exec ~/testboot.sh"
    

      

      

     设置脚本可执行权限:

    sudo chmod -R 777 /etc/init.d/testboot
    

     最后将该脚本作为服务设置开机自动加载:

    sudo update-rc.d testboot defaults
    

      

    未来新的添加,只需要把要执行的动作放在testboot.sh文件里

    #!/bin/sh
    #创建TXT 一次即可
    touch /home/pi/testboot.txt
    
    #给与执行权限 一次即可
    chmod 777 /home/pi/testboot.txt
    
    #TXT插入一句话-调试用
    #echo "hello pi~" >> /home/pi/testboot.txt
    
    #延迟5秒执行
    #sleep 5
    
    #执行自定义python脚本 为了防止找不到python用的是绝对路径
    /usr/bin/python /home/pi/Desktop/video/main.py
    
    #TXT插入一句话-调试用
    #echo "hello pi end~" >> /home/pi/testboot.txt
    

      

    方式二 通过桌面启动(不建议)

    注意:这个方法除了依赖桌面之外,如果开启了多个桌面则会导致自定义的程序多次启动。比如系统启动桌面会调用一次testboot.sh脚本,如果再用远程桌面登录到树莓派,脚本会再执行一次。

    二、新建desktop文件设置树莓派开机启动项

    这种方式类似于Windows系统的“开始”菜单中的“启动”项,操作方法如下:

    在 /home/pi/.config 下创建一个文件夹,名称为 autostart

    mkdir /home/pi/.config/autostart

     

    在该文件夹下创建一个xxx.desktop文件,文件名以.desktop结尾,名称可自定义,文件的内容如下:

    [Desktop Entry]
    Name=example
    Comment=My Python Program
    Exec=python /home/pi/example.py
    Icon=/home/pi/example.png
    Terminal=false
    MultipleArgs=false
    Type=Application
    Categories=Application;Development;
    StartupNotify=true
    

      

    该文件中的Name、Comment、Icon分别表示这个启动项目的名称、备注以及显示的图标,具体的值可自行设定;Exec表示调用的指令。

    重启系统,就可以生效了

    sudo reboot
    

      

  • 相关阅读:
    Vue3.0 是如何变得更快的?
    阿里云 Centos7 安装mongodb
    ASP.Net Core5.0 EF Core使用记录
    MongoDB批量更新|按条件更新SQL|批量删除某个字段
    Layui单元格编辑获取修改前的值
    判断字符串出现的多个位置
    原生JavaScript的DOM操作汇总
    @Value值为null、#和$的区别
    Dubbo推荐用法
    Dubbo 服务化最佳实践
  • 原文地址:https://www.cnblogs.com/kekeoutlook/p/13729831.html
Copyright © 2011-2022 走看看