版权声明:转载请注明出处 https://blog.csdn.net/C1041067258/article/details/84290493
最近一直在搞服务器,现在要运行我们的程序,都是jar包的格式,但是每次输入运行命令都很麻烦,现在进行放入脚本启动或者注册服务启动,来简化启动,但是这个方法也有一定的缺陷,需要一定的标准规范才可以正确运行,比如jar包的打包名称一定要和脚本中的名称一样
下面进入正题,首先来脚本启动
说一下前提,根据自己的需求修改相应的路径
1. jar包路径 /usr/local/docpc
2. jar包名称 doctor-pc-0.0.1-SNAPSHOT.jar
3. java路径 /usr/bin/java
新建启动脚本
脚本启动的日志会在jar包目录下生成
# vim start.sh
脚本内容如下
#启动命令所在目录
HOME='/usr/local/docpc'
start(){
#进入命令所在目录
cd $HOME
nohup sudo /usr/bin/java -jar doctor-pc-0.0.1-SNAPSHOT.jar > doctor-pc-0.0.1-SNAPSHOT.jar.log 2>&1 &
}
stop(){
#kill 掉所有java程序
ps -ef | grep doctor-pc-0.0.1| grep -v grep |awk '{print $2}' | xargs sudo kill -9
}
case $1 in
start)
start
;;
stop)
stop
;;
restart)
$0 stop
sleep 2
$0 start
;;
*)
echo "Usage: {start|stop|restart}"
;;
esac
exit
启动
./start.sh start
关闭
./start.sh stop
重启
./start.sh restart
至此脚本启动完成,在jar包的同等级目录下会生成日志
下面来讲一下把jar包的启动注册到系统服务并添加到开机自启
jar包路径 /usr/local/docpc/
- 进入 /lib/systemd/system
# cd /lin/systemd/system
- 新建 docpc.service
# vim docpc.service
- docpc.service内容如下
[Unit]
Description=docpc
After=network.target
[Service]
ExecStart=/usr/bin/java -jar /usr/local/docpc/doctor-pc-0.0.1-SNAPSHOT.jar
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop= ps -ef | grep doctor-pc-0.0.1| grep -v grep |awk '{print $2}' | xargs sudo kill -9
[Install]
WantedBy=multi-user.target
- 给docpc.service加文件权限
# chmod 777 docpc.service
- 启动服务
# systemctl start docpc.service
- 关闭
# systemctl stop docpc.service
- 重启
# systemctl restart docpc.service
- 加入开机自启
# systemctl enable docpc.service
- 关闭开机自启
# systemctl disable docpc.service
到此,jar包的系统服务设置完成,脚本启动和注册系统是两个不同的启动方式,各位可以把启动脚本放入开机自动也可实现脚本的开机启动,这里就不说了,大家可以去Google一下。注册系统服务的时候本人也是想可以输出一下日志的,但是尝试不成功,各位如果有建议可以留言,本人虚心受教,至于windows版的jar包启动可以关注本人的另一篇windows启动jar包脚本的博客