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

相关文章
|
1月前
|
运维 监控 安全
盘点Linux服务器运维管理面板
随着云计算和大数据技术的迅猛发展,Linux服务器在运维管理中扮演着越来越重要的角色。传统的Linux服务器管理方式已经无法满足现代企业的需求,因此,高效、安全、易用的运维管理面板应运而生。
|
2月前
|
运维 监控 网络协议
|
1月前
|
缓存 运维 监控
【运维必备知识】Linux系统平均负载与top、uptime命令详解
系统平均负载是衡量Linux服务器性能的关键指标之一。通过使用 `top`和 `uptime`命令,可以实时监控系统的负载情况,帮助运维人员及时发现并解决潜在问题。理解这些工具的输出和意义是确保系统稳定运行的基础。希望本文对Linux系统平均负载及相关命令的详细解析能帮助您更好地进行系统运维和性能优化。
52 3
|
2月前
|
机器学习/深度学习 人工智能 Ubuntu
|
2月前
|
存储 运维 搜索推荐
|
2月前
|
存储 数据可视化 Java
震惊!如何在linux下部署项目,部署/运行jar包 超详细保姆级教程!
如何在Linux系统下部署和运行Java项目jar包,包括传输文件到Linux、使用nohup命令运行jar包、查看端口状态、杀死进程和查看项目运行状态,以及如何解决“没有主清单属性”的错误。
641 1
震惊!如何在linux下部署项目,部署/运行jar包 超详细保姆级教程!
|
2月前
|
运维 网络协议 安全
Linux安全运维--一篇文章全部搞懂iptables
Linux安全运维--一篇文章全部搞懂iptables
53 1
|
2月前
|
Java Windows
如何在windows上运行jar包/JAR文件 如何在cmd上运行 jar包 保姆级教程 超详细
本文提供了一个详细的教程,解释了如何在Windows操作系统的命令提示符(cmd)中运行JAR文件。
1143 1
|
3月前
|
Linux Shell
6-9|linux查询现在运行的进程
6-9|linux查询现在运行的进程
|
2月前
|
Web App开发 运维 安全
1Panel:一个现代化、开源的 Linux 服务器运维管理面板
1Panel:一个现代化、开源的 Linux 服务器运维管理面板
105 0
下一篇
DataWorks