【树莓派】在树莓派上制作开机自启动程序及服务

简介:

希望将自己的application在树莓派(Raspberry Pi ),做成开机自动运行,进行了一些实践,如下:

 

测试环境:树莓派,管理员:root,普通用户:haochuang

实现目标:在Linux启动时,自动运行位于普通用户haochuang根目录下的脚本程序osprey,该程序会在每次执行时自动向本地日志文件追加一条记录,源码如下:

 

1. 准备好相应的 application

复制代码
#!/bin/sh
### BEGIN INIT INFO
# Provides:          osprey
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Required-Start: $local_fs
# Required-Stop:
# chkconfig: 12345 99 05
# Short-Description: Start or stop the Osprey App.
### END INIT INFO

start(){
    echo -n "start osprey"
    cd /home/lifeccp/webapp/osprey
    su haochuang -c "java -jar osprey-*.jar --spring.profiles.active=test &"
}

stop(){
    echo -n "stop osprey"
}

case $1 in
start)
    start
    ;;
stop)
    stop
    ;;
*)
    echo "Usage: $0 (start|stop)"
    ;;
esac
复制代码

 

2.为程序增加可执行权限,并将程序放到 /etc/init.d/

 mv osprey /etc/init.d/
 chmod +r /etc/init.d/osprey

 3.安装chkconfig

sudo apt-get install chkconfig

如果安装失败,则使用下面命令再次尝试:

sudo apt-get install chkconfig --fix-missing

 

4.运行chkconfig --add osprey, 把该服务添加到配置当中

 

5.运行chkconfig --list osprey,可以查看该服务进程的状态 

 

6.完了之后,reboot一下,并查看进程,进行验证;

 

 由于我增加了两个服务,结果截图如下:

 

补充1,方案的解释:

切换用户到haochuang,然后执行命令启动应用程序;

su haochuang                    --切换到相应用户
cd /home/haochuang                 --切换到根目录
java -jar osprey-1.0.4.jar --spring.profiles.active=test &  --执行应用程序
exit                         --退出帐号

 

做成服务的好处是可以定义多个交互命令,比如:start,stop,restart,reset...,在服务运行的过程中还可以做相应操作。

看起来好象一切都没错,但是发现只运行了第一行的命令,后面的都没有运行,直到退出lifeccp用户后才发现好象执行完毕。

分析原因,是因为Linux启动的时候是在root帐号下,执行su lifeccp等于打开了一个新的shell脚本,因此下面的代码都在等着新的Shell脚本结束才能运行,就象在主程序里调用了一个子程序,而子程序是个死循环,一下出来来结果下面的要等死了。

在执行上述脚本程序时,不要离开本身的Shell。我们可以把执行命令做为su的一个参数传递进去,因为没有涉及到打开新的Shell,因此可以正常执行你期望的脚本程序,顺利实现开机自动启动指定的脚本程序。

 

补充2,如果执行 sudo apt-get install chkconfig 一直报错,安装不成功,那么需要检查如下几点:

  • 检查设备网络情况是否正常,确保设备网络本身可通达内外网;
  • 更新一下系统配置:sudo apt-get update

然后再次重试。

 

本文转自 念槐聚 博客园博客,原文链接:http://www.cnblogs.com/haochuang/p/6005121.html,如需转载请自行联系原作者

相关文章
|
3月前
|
Ubuntu
在树莓派4B上安装ubuntu系统
在树莓派4B上安装ubuntu系统
|
数据安全/隐私保护 Windows
Windows使用远程桌面连接树莓派
Windows使用远程桌面连接树莓派
1065 0
Windows使用远程桌面连接树莓派
|
监控 Python
树莓派远程音乐播放器
主要功能: udp助手发送指令到云服务器 云服务器中转到树莓派 树莓派处理指令 - 放歌 - 向指定端口发送udp客户端请求的数据 - 停止放歌 - 停止程序
258 0
树莓派远程音乐播放器
树莓派3b+安装Raspbian系统
树莓派烧录系统需要先下载树莓派系统镜像或镜像压缩包,再将SD卡插入电脑,用SDFormatter这个软件对SD卡的第一个盘(boot盘)进行格式化,再用Win32DiskImager这个软件选择img镜像文件进行系统的烧录。
221 0
树莓派3b+安装Raspbian系统
|
安全
树莓派系列-1-初识树莓派,把它装起来
树莓派系列-1-初识树莓派,把它装起来
156 0
树莓派系列-1-初识树莓派,把它装起来