前言
树莓派配置开机自启动程序大致有三种,目前最主流的是将程序作为服务启动,本文介绍下树莓派开机启动 jar(SpringBoot打成的jar包)
步骤
- 编写启动服务和关闭服务的脚本 start.sh 和 stop.sh 来控制打开和关闭服务
start.sh 代码如下:
#!/bin/sh
echo "zlink101 service begin start"
export JAVA_HOME=/home/soft/jdk1.8.0_241
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=/home/soft/go/bin:$PATH
cd /mnt/service
sleep 10s
nohup ./xjar java -jar gateway-1.0.0.jar &
echo "zlink101 service start success"
stop.sh 代码如下:
#!/bin/sh
echo "zlink101 stop begin"
ID=`ps -ef | grep "gateway-1.0.0.jar" | grep -v "grep" | awk '{print $2}'`
echo $ID
for id in $ID
do
kill -9 $id
echo "killed $id"
done
sleep 5s
echo "zlink101 stop success"
写完之后可以运行测试下
- 进入 /etc/init.d/ 目录下新建一个空白文件,如:zlink101 并编辑保存以下脚本
#! /bin/bash
### BEGIN INIT INFO
# Provides: Juson
# Required-Start: $network $remote_fs $syslog $time
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: zlink101 initscript
### END INIT INFO
case "$1" in
start)
sh /mnt/service/start.sh
;;
stop)
sh /mnt/service/stop.sh
;;
*)
exit 1
;;
esac
exit 0
- 将脚本添加至服务中:sudo update-rc.d zlink101 defaults ,最后 reboot 测试下
- 执行 sudo service zlink101 start 和 sudo service zlink101 stop 测试下脚本是否正常,通过执行 systemctl status zlink101.service 命令可以查看相应状态及日志,如果运行的过程中改动了脚本需要执行一下 systemctl daemon-reload 重新加载
最后注意文件权限!