设置Raspberry Pi开机启动

树莓派程序开机启动设置。

关于开机启动,我在网上找的一个教程,然后照着做了一次。

需要开机启动的程序是自己写的 我的是一个数据传输的程序,名字为 trans.py

 

开机启动脚本,保存在/etc/init.d目录下面:

#!/bin/bash

# /etc/init.d/trans

### BEGIN INIT INFO

# Provides: xiaofeng

# Required-Start: $remote_fs $syslog

# Required-Stop: $remote_fs $syslog

# Default-Start: 2 3 4 5

# Default-Stop: 0 1 6

# Short-Description: trans initscript

# Description: transform data

### END INIT INFO

 

case "$1" in

    start)

        echo "Starting trans"

        /scream/trans.py &

        ;;

    stop)

        echo "Stopping trans"

        #kill all trans.py

        kill $(ps aux | grep -m 1 'python /scream/trans.py' | awk '{ print $2 }')

        ;;

    *)

        echo "Usage: service ledblink start|stop"

        exit 1

        ;;

esac

exit 0

 

这个是原来的脚本。我把红色标记的地方换成了我的程序的信息,然后就OK了。我脚本 的保存的名字是trans  

修改权限:sudo chmod +x /etc/init.d/trans

可以通过service命令测试一下

 

sudo service trans start#启动

sudo service trans stop#停止

 

我开始时测试service命令出错,说找不到文件,应该是权限的问题,后来我又重新做了一边,莫名其妙得好了。

 

最后设置开机启动:sudo update-rc.d trans defaults

删除开机启动:update-rc.d -f trans remove

参照文章的出处:

https://www.embbnux.com/2015/04/12/raspberry_pi_setting_python_script_start_on_boot/

Update-rc.d 命令的用法 http://www.52pi.net/?p=255

关于脚本语言的case的用法:

case 字符串 in

模式1) command;;

模式2) command;;

......

Esac

Case语句是多分支语句,它按照“)”左边的模式对字符串值的匹配来执行相应的命令,匹配是由上而下地进行,总是执行首先匹配到的模式对应的命令表。如果,模式中的每一个都匹配不到,则什么也不执行,一边后再后面放一个*),表示以上都不匹配的任意字符串。“;;”表示该模式对应的命令部分的程序。

 

$#:表示保存程序命令行参数的数目。

$?:表示保存前一个命令的返回值。

$0:表示列出当前的程序名

$*:表示以“$1 $2...”的形式保存所有输入的命令行参数

$@:表示以“$1”“$2”...的形式保存所有输入的命令行参数。

$n:$1为命令行的第一个参数,$2为命令行的第二个攒书,一次类推。

 

权限设置:

chmod u+x name 表示只有自己可以执行

chmod ug+x name 表示自己以及同一群可以执行。

chmod +x 表示所有人都可以执行

posted @ 2020-02-09 01:48  一斜星辰酱  阅读(713)  评论(0编辑  收藏  举报