Linux非常详细的shell运维脚本一键启动停止状态SpringBoot打成可运行jar包

简介: Linux非常详细的shell运维脚本一键启动停止状态SpringBoot打成可运行jar包

注意:脚本我已经放在资源上了可以直接下载

1.脚本 创建符合项目的脚本

[root@master01 home]# chmod -R 755 pro_demo.sh

#jar包
jar_name=demo.jar
jar_path=/usr/webjar/
log_path=/usr/webjar/logs/`date +%y-%m-%d`_out.log
#指向自定义jdk
#export JAVA_HOME=/usr/jdk/jdk1.8.0_381
#export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#export PATH=$JAVA_HOME/bin:$PATH
stop() {
  echo ""
  pid=$(ps -ef | grep $jar_name | grep -v grep | awk '{print $2}')
  if [ -z $pid ]; then # -z 是判断是否为空
    echo "${jar_name}未运行!"
  else
    echo "准备关闭进程$pid"
    kill -9 $pid
    sleep 0.5
    echo "${jar_name}已关闭!"
  fi
  echo ""
}
 
start() {
  echo ""
  pid=$(ps -ef | grep $jar_name | grep -v grep | awk '{print $2}')
  if [ -z $pid ]; then
    cd $jar_path  # 这里转到jar包目录执行命令,是为了使用jar_path下的config文件,貌似java程序只能识别当前执行命令目录下的配置,否则就是使用已打入Jar包的配置文件。
    nohup java -jar $jar_name >$log_path 2>&1 &
    pid=$(ps -ef | grep $jar_name | grep -v grep | awk '{print $2}')
    echo "应用 ${jar_name}启动成功,pid=${pid}"
    # tail -f $log_path
 
  else
    echo "应用 ${jar_name} 正在运行,pid = ${pid}"
  fi
  echo ""
}
 
status() {
  echo ""
  pid=$(ps -ef | grep $jar_name | grep -v grep | awk '{print $2}')
  if [ -z $pid ]; then
    echo "应用 ${jar_name} 未运行"
  else
    echo "应用 ${jar_name} 正在运行,pid = ${pid}"
  fi
  echo ""
 
}
restart() {
  stop
 
  sleep 2
  echo "停止完成,准备启动jar包"
  start
}
action() {
  echo "请输入数字选择要执行的操作:1=启动,2=重启,3=停止,4=查看运行状态,5=退出"
  echo '你输入的数字为:'
  read a
  case $a in
  "1")
    start
    ;;
  "2")
    restart
    ;;
  "3")
    stop
    ;;
  "4")
    status
    ;;
  "5")
    exit 1
    ;;
  *)
    echo "输入错误,请重新输入"
    action
    ;;
  esac
}
action

2.脚本讲解

主要提供了启动、停止、重启、查看状态等操作。以下是脚本的详细讲解:

  1. 变量定义
  • jar_name=demo.jar:定义了JAR包的名字。
  • jar_path=/home/:定义了JAR包所在的路径。
  • log_path=/home/logs/:定义了日志的输出路径,使用了当前日期作为日志文件的名称。
  1. 停止函数(stop)
  • 函数首先通过ps -ef | grep $jar_name查找正在运行的与jar_name匹配的进程。
  • 如果找到了进程,它会输出进程ID并使用kill -9命令强制关闭该进程。
  • 如果没找到进程,它会输出提示信息表示该JAR包未运行。
  1. 启动函数(start)
  • 首先,它检查JAR包是否正在运行。
  • 如果没有运行,它会进入jar_path目录并使用nohup命令启动JAR包,并将输出重定向到log_path指定的日志文件。
  • 如果JAR包正在运行,它会输出提示信息表示该JAR包正在运行。
  1. 状态函数(status)
  • 该函数与停止函数类似,但输出的是JAR包的状态,而不是执行停止操作。
  1. 重启函数(restart)
  • 首先调用停止函数关闭JAR包。
  • 等待2秒后,再调用启动函数启动JAR包。
  1. 动作函数(action)
  • 提示用户输入数字选择要执行的操作(启动、重启、停止、查看状态、退出)。
  • 根据用户输入的数字,调用相应的函数。
  1. 脚本执行
  • 脚本的最后一行调用了action函数,因此当脚本被执行时,它会提示用户输入数字并执行相应的操作。

用户通过输入数字来执行不同的操作。

3.脚本使用

[root@master01 home]# ./pro_demo.sh

请输入数字选择要执行的操作:1=启动,2=重启,3=停止,4=查看运行状态,5=退出

你输入的数字为:

1

应用 demo.jar启动成功,pid=19349

[root@master01 home]# cd logs/

[root@master01 logs]# ls

23-12-18_demo.log

相关文章
|
3天前
|
Shell Linux
【linux】Shell脚本中basename和dirname的详细用法教程
本文详细介绍了Linux Shell脚本中 `basename`和 `dirname`命令的用法,包括去除路径信息、去除后缀、批量处理文件名和路径等。同时,通过文件备份和日志文件分离的实践应用,展示了这两个命令在实际脚本中的应用场景。希望本文能帮助您更好地理解和应用 `basename`和 `dirname`命令,提高Shell脚本编写的效率和灵活性。
54 32
|
1月前
|
负载均衡 IDE Java
SpringBoot整合XXL-JOB【04】- 以GLUE模式运行与执行器负载均衡策略
在本节中,我们将介绍XXL-JOB的GLUE模式和集群模式下的路由策略。GLUE模式允许直接在线上改造方法为定时任务,无需重新部署。通过一个测试方法,展示了如何在调度中心配置并使用GLUE模式执行定时任务。接着,我们探讨了多实例环境下的负载均衡策略,确保任务不会重复执行,并可通过修改路由策略(如轮训)实现任务在多个实例间的均衡分配。最后,总结了GLUE模式和负载均衡策略的应用,帮助读者更深入理解XXL-JOB的使用。
41 9
|
3月前
|
存储 Shell Linux
Linux 如何更改默认 Shell
Linux 如何更改默认 Shell
81 0
Linux 如何更改默认 Shell
|
3月前
|
Dubbo Java 应用服务中间件
深入探讨了“dubbo+nacos+springboot3的native打包成功后运行出现异常”的原因及解决方案
本文深入探讨了“dubbo+nacos+springboot3的native打包成功后运行出现异常”的原因及解决方案。通过检查GraalVM版本兼容性、配置反射列表、使用代理类、检查配置文件、禁用不支持的功能、查看日志文件、使用GraalVM诊断工具和调整GraalVM配置等步骤,帮助开发者快速定位并解决问题,确保服务的正常运行。
86 1
|
4月前
|
Web App开发 网络协议 Linux
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
这篇文章是关于Linux命令的总结,涵盖了从基础操作到网络配置等多个方面的命令及其使用方法。
106 1
linux命令总结(centos):shell常用命令汇总,平时用不到,用到就懵逼忘了,于是专门写了这篇论文,【便持续更新】
|
3月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
3月前
|
安全 Java 应用服务中间件
如何将Spring Boot应用程序运行到自定义端口
如何将Spring Boot应用程序运行到自定义端口
111 0
|
4月前
|
XML Java 应用服务中间件
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错
323 2
|
4月前
|
存储 Shell Linux
【Linux】shell基础,shell脚本
Shell脚本是Linux系统管理和自动化任务的重要工具,掌握其基础及进阶用法能显著提升工作效率。从简单的命令序列到复杂的逻辑控制和功能封装,Shell脚本展现了强大的灵活性和实用性。不断实践和探索,将使您更加熟练地运用Shell脚本解决各种实际问题
62 0
|
4月前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
150 1