linux自动部署jar包,注册系统服务(基于Centos7)

简介: linux自动部署jar包,注册系统服务(基于Centos7)

最近一直在搞服务器,现在要运行我们的程序,都是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 掉本程序
  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/
  1. 进入 /lib/systemd/system
# cd /lin/systemd/system
  1. 新建 docpc.service
# vim docpc.service
  1. 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
  1. 给docpc.service加文件权限
# chmod 777 docpc.service
  1. 启动服务
# systemctl start docpc.service
  1. 关闭
# systemctl stop docpc.service
  1. 重启
# systemctl restart docpc.service
  1. 加入开机自启
# systemctl enable docpc.service
  1. 关闭开机自启
# systemctl disable docpc.service

到此,jar包的系统服务设置完成,脚本启动和注册系统是两个不同的启动方式,各位可以把启动脚本放入开机自动也可实现脚本的开机启动,这里就不说了,大家可以去Google一下。

下面进行强烈推荐的一波操作

  1. 首先把上面编写的shell启动脚本移动到/etc/rc.d/init.d目录下,并命名startjar
# mv start.sh /etc/rc.d/init.d/startjar
  1. 打开启动脚本
# vim startjar
  1. 头部添加声明代码
#!/bin/sh
 #chkconfig: 2345 80 90
 #description:auto_run

完成的脚本代码如下

#!/usr/bin/sh
#chkconfig: 2345 80 90
#description:auto_run
#启动命令所在目录
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 掉本程序
  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
  1. 服务添加
# chkconfig --add startjar

本步骤如果出现服务不支持chkconfig的解决方案就是第三步的操作

  1. 启动/关闭/重启/状态
# systemctl start startjar
# systemctl stop startjar
# systemctl restart startjar
# systemctl status startjar
  1. 脚本注册服务完成,本过程就是对上面两个过程的选择性整合,大家可根据实际情况选择使用最后附上删除服务
# chkconfig  --del startjar

有问题欢迎留言咨询

目录
相关文章
|
4天前
|
Linux 应用服务中间件 Shell
linux系统服务二!
本文详细介绍了Linux系统的启动流程,包括CentOS 7的具体启动步骤,从BIOS自检到加载内核、启动systemd程序等。同时,文章还对比了CentOS 6和CentOS 7的启动流程,分析了启动过程中的耗时情况。接着,文章讲解了Linux的运行级别及其管理命令,systemd的基本概念、优势及常用命令,并提供了自定义systemd启动文件的示例。最后,文章介绍了单用户模式和救援模式的使用方法,包括如何找回忘记的密码和修复启动故障。
20 5
linux系统服务二!
|
4天前
|
Linux 应用服务中间件 Shell
linux系统服务!!!
本文详细介绍了Linux系统(以CentOS7为例)的启动流程,包括BIOS自检、读取MBR信息、加载Grub菜单、加载内核及驱动程序、启动systemd程序加载必要文件等五个主要步骤。同时,文章还对比了CentOS6和CentOS7的启动流程图,并分析了启动流程的耗时。此外,文中还讲解了Linux的运行级别、systemd的基本概念及其优势,以及如何使用systemd管理服务。最后,文章提供了单用户模式和救援模式的实战案例,帮助读者理解如何在系统启动出现问题时进行修复。
21 3
linux系统服务!!!
|
9天前
|
Linux 数据库
Linux服务如何实现服务器重启后的服务延迟自启动?
【10月更文挑战第25天】Linux服务如何实现服务器重启后的服务延迟自启动?
44 3
|
9天前
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
50 3
|
9天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
45 2
|
12天前
|
监控 安全 Linux
CentOS7下安装配置ntp服务的方法教程
通过以上步骤,您不仅能在CentOS 7系统中成功部署NTP服务,还能确保其配置合理、运行稳定,为系统时间的精确性提供保障。欲了解更多高级配置或遇到特定问题,提供了丰富的服务器管理和优化资源,可作为进一步学习和求助的平台。
26 1
|
27天前
|
Ubuntu Linux 网络安全
Linux中服务管理问题
【10月更文挑战第4天】
20 2
|
28天前
|
存储 安全 Linux
CentOS安装SeaweedFS
通过上述步骤,您应该能够在CentOS系统上成功安装并启动SeaweedFS。记住,根据实际部署规模和需求,可能还需要进一步调整配置参数和优化网络布局。SeaweedFS的灵活性和扩展性意味着随着使用深入,您可能需要探索更多高级配置和管理策略。
100 64
|
29天前
|
存储 安全 Linux
CentOS安装SeaweedFS
通过上述步骤,您应该能够在CentOS系统上成功安装并启动SeaweedFS。记住,根据实际部署规模和需求,可能还需要进一步调整配置参数和优化网络布局。SeaweedFS的灵活性和扩展性意味着随着使用深入,您可能需要探索更多高级配置和管理策略。
108 61
|
21天前
|
Linux 网络安全 数据安全/隐私保护
Linux系统之Centos7安装cockpit图形管理界面
【10月更文挑战第12天】Linux系统之Centos7安装cockpit图形管理界面
48 1
Linux系统之Centos7安装cockpit图形管理界面