Linux启动Java程序jar包Shell脚本方式
作者:lcz-2000
文章介绍了如何创建一个Shell脚本来简化在Linux环境中启动Java程序jar包的过程,该脚本可以检查jar包的状态、启动、停止和重启项目,只需修改脚本中的变量并将其与jar包放在同一目录下,即可方便地使用该脚本
Linux启动Java程序jar包Shell脚本
在Linux 环境中部署SpringBoot等Java项目时总是要重复的输入一些命令
这里将命令编写成一个可以执行的shell脚本,只需要放置在和jar包同级别的目录下,同时修改脚本内置的一些变量后,方可正常使用
脚本使用
- 创建一个名为run.sh的脚本(脚本名称根据自己想法即可),存放在与需要启动的jar包同级别目录中
- 脚本内容与本文提供的一致,记得修改APP_NAME参数的值
- 在存放路径下输入命令 bash run.sh status即可查看当前jar包的运行状态
- 输入命令 sh action.sh start即可运行项目
- 命令一共支持四种,分别是:start|stop|restart|status
具体功能可以查看脚本代码
#!/bin/bash #这里替换为程序位置 #注意:APP_NAME为jar文件名(而非路径),且"="后面不能有空格 #此处的APP_NAME为打包后jar包名 #注意:如果包名携带日期或其他会变化的内容,例如xxxx-1.0.0.20221110.release.jar,请修改此处的名称为xxxx这类固定且能标识服务的名称,同时替换start方法中的启动命令 APP_NAME=lcz.jar #添加jar包路径,方便在任何目录下都可以运行脚本启动服务 APP_PATH=/root/lcz #使用说明,用来提示输入参数 usage() { echo "请输入您进行的操作: [start|stop|restart|status]" echo "例如: bash/run.sh start" exit 1 } #检查程序是否在运行 is_exist(){ pid=`ps -ef|grep $APP_NAME|grep -v grep|awk '{print $2}'` #如果不存在返回1,存在返回0 if [ -z "${pid}" ]; then return 1 else return 0 fi } #启动命令执行后输出结果 start_log(){ is_exist if [ $? -eq 0 ]; then echo "${APP_NAME} 启动成功! pid=${pid}" tail ${APP_PATH}/run.log -f else echo "${APP_NAME} 启动失败!请检查后重试" fi } #启动方法 start(){ is_exist if [ $? -eq 0 ]; then echo "${APP_NAME} is already running. pid=${pid}" else nohup java -jar -Xmx512m -Xms512m ${APP_PATH}/${APP_NAME} > ${APP_PATH}/run.log & #如果APP_NAME携带可变内容,请替换下方启动命令,符号 * 表示jar包名称中变化的部分 #nohup java -jar -Xmx512m -Xms512m ${APP_PATH}/${APP_NAME}*.jar >${APP_PATH}/run.log >/dev/null 2>&1 & start_log fi } #停止方法 stop(){ is_exist if [ $? -eq "0" ]; then kill -9 $pid echo "${APP_NAME} 已关闭! pid=${pid}" else echo "${APP_NAME} is not running" fi #该脚本的特殊性:确保关闭所有openoffice进程 soffice_stop } #输出运行状态 status(){ is_exist if [ $? -eq "0" ]; then echo "${APP_NAME} is running. Pid is ${pid}" else echo "${APP_NAME} is not running." fi } #重启 restart(){ stop echo "${APP_NAME} 准备重启..." sleep 5 start } #关闭openoffice soffice_stop(){ soffice_pid=`ps -e|grep soffice.bin |awk '{print $1}'` if [ -n "${soffice_pid}" ]; then kill -9 $soffice_pid echo "已关闭soffice.bin" fi } #根据输入参数,选择执行对应方法,不输入则执行使用说明 case "$1" in "start") start ;; "stop") stop ;; "status") status ;; "restart") restart ;; *) usage ;; esac
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。