Linux 启动/停止/重启 JAR程序 shell脚本 用于 Springboot api jar home 编辑时间 2019/04/30 ## 需求 最新项目都做了动静分离 后台api接口,都以springboot打包jar文件方式实现 那么在linux环境中,运维jar每次都要要打很多命令来 `启动` `停止` `重启` jar文件 那么最终要实现的就是,以我的浅薄的shell脚本水平,实现自动化启动|停止|重启jar文件的脚本 ## 正文 文件互相之间无依赖关系,可单独使用 **startup.sh** ```shell #!/bin/bash # 启动脚本,nohup方式后台运行jar包,其中参数需要根据实际情况调整 # 参数说明如下 # -Xms128m JVM初始分配的堆内存 # -Xmx1024m JVM最大允许分配的堆内存 # /root/java/api-1.0.0.jar jar文件全路径 # --spring.profiles.active=prod 运行application-prod.properties # logs/api.out 实时输出控制台信息到指定文件 nohup java -jar -Xms128m -Xmx1024m /root/java/api-1.0.0.jar --spring.profiles.active=prod > logs/api.out & ``` **stop.sh** ```shell #!/bin/bash # 停止脚本,其中 api-1.0.0.jar 需要替换成实际文件名,而且尽量确保名字唯一性,防止错杀 apiID=$(ps -ef |grep 'api-1.0.0.jar'|grep -v 'grep'| awk '{print $2}') # run # 判断进程是否存在 if test $apiID ;then # 杀死进程 kill -9 $apiID echo "[SUCCESS] 进程已杀死" else # 提示不进程不存在 echo "[ERROR] 进程不存在" fi ``` **restart.sh** ```shell #!/bin/bash # 重启脚本,实际上就是结合了前面2个脚本 # 停止 apiID=$(ps -ef |grep 'api-1.0.0.jar'|grep -v 'grep'| awk '{print $2}') # run # 判断进程是否存在 if test $apiID ;then # 杀死进程 kill -9 $apiID echo "[SUCCESS] 进程已杀死" else # 提示不进程不存在 echo "[ERROR] 进程不存在" fi # 休眠5秒 sleep 5 # 启动 nohup java -jar -Xms128m -Xmx1024m /root/java/api-1.0.0.jar --spring.profiles.active=prod > logs/api.out & ``` **monitor.sh** ```shell # !/bin/sh # 监控jar的进程和端口是否正常,不正常自动重启 # 通常和定时任务crontab一起使用 # 未完待续 ``` # END 个人博客: https://zzzmh.cn 送人玫瑰,手留余香 赞赏 Wechat Pay Alipay Nginx 可视化!配置监控一条龙!Nginx-GUI入门 Centos7.x 从零安装部署服务器环境 包括 java mysql redis nginx