#!/bin/sh# 该脚本为Linux下启动java程序的脚本## author: luandy# date: 2021/1/15## 特别注意:# 该脚本使用系统kill命令来强制终止指定的java程序进程。# 所以在杀死进程前,可能会造成数据丢失或数据不完整。如果必须要考虑到这类情况,则需要改写此脚本,### 根据实际情况来修改以下配置信息 ################################### JAVA应用程序的名称APP_NAME=uid-consumer# JAVA应用程序端口号SERVER_PORT=9999# jar包存放路径JAR_PATH='/app/uid-consumer'# jar包名称JAR_NAME=uid-consumer-1.1.0-SNAPSHOT.jar# PID 代表是PID文件JAR_PID=$JAR_NAME\.pid# 日志输出文件LOG_FILE=logs# java虚拟机启动参数JAVA_OPTS="-Xms512m -Xmx512m -XX:MetaspaceSize=512m -XX:MaxMetaspaceSize=1024m -XX:ParallelGCThreads=4 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=utf-8"# 根据实际情况来修改以上配置信息 ################################### 检查程序是否处于运行状态is_exist() { # 查询出应用服务的进程id,grep -v 是反向查询的意思,查找除了grep操作的run.jar的进程之外的所有进程 pid=`ps -ef|grep $JAR_NAME|grep -v grep|awk '{print $2}' ` # [ ]表示条件测试。注意这里的空格很重要。要注意在'['后面和']'前面都必须要有空格 # [ -z STRING ] 如果STRING的长度为零则返回为真,即空是真 # 如果不存在返回0,存在返回1 if [ -z "${pid}" ]; then return 0 else return 1 fi}# ######### Shell脚本中$0、$?、$!、$$、$*、$#、$@等的说明 ########## $$ Shell本身的PID(ProcessID,即脚本运行的当前 进程ID号)# $! Shell最后运行的后台Process的PID(后台运行的最后一个进程的 进程ID号)# $? 最后运行的命令的结束代码(返回值)即执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)# $- 显示shell使用的当前选项,与set命令功能相同# $* 所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数,此选项参数可超过9个。# $@ 所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。# $# 添加到Shell的参数个数# $0 Shell本身的文件名# $1~$n 添加到Shell的各参数值。$1是第1参数、$2是第2参数…。# 服务启动方法start() { is_exist if [ $? -eq "1" ]; then echo "$APP_NAME is already running pid is ${pid}" else # jar服务启动脚本 nohup java $JAVA_OPTS -Xloggc:$LOG_FILE/gc/gclog.log -XX:HeapDumpPath=$LOG_FILE/gc/HeapDump.hprof -jar $JAR_PATH/$JAR_NAME >./$LOG_FILE/run.log 2>&1 & echo $! > $JAR_PID echo "start $APP_NAME successed pid is $! " tail -1000f $LOG_FILE/run.log fi }# 服务停止方法stop() { # is_exist pidf=$(cat $JAR_PID) # echo "$pidf" echo "pid = $pidf begin kill $pidf" kill $pidf rm -rf $JAR_PID sleep 2 # 判断服务进程是否存在 is_exist if [ $? -eq "1" ]; then echo "pid = $pid begin kill -9 $pid" kill -9 $pid sleep 2 echo "$APP_NAME process stopped!" else echo "$APP_NAME is not running!" fi }# 服务运行状态查看方法status() { is_exist if [ $? -eq "1" ]; then echo "$APP_NAME is running,pid is ${pid}" else echo "$APP_NAME is not running!" fi}# 重启服务方法restart() { # 调用服务停止命令 stop # 调用服务启动命令 start}# 帮助说明,用于提示输入参数信息usage() { echo "Usage: sh run-service.sh [ start | stop | restart | status ]" exit 1}#################################### 读取脚本的第一个参数($1),进行判断# 参数取值范围:{ start | stop | restart | status }# 如参数不在指定范围之内,则打印帮助信息####################################根据输入参数,选择执行对应方法,不输入则执行使用说明case "$1" in 'start') start ;; 'stop') stop ;; 'restart') restart ;; 'status') status ;; *) usage ;;esacexit 0

linux启动java jar文件_推荐:Linux启动Java程序jar包Shell脚本相关推荐

  1. Android启动过程中执行一个C语言的应用程序或者执行shell脚本

    Android启动过程中执行一个C语言的应用程序或者执行shell脚本 一.Android启动过程中去对系统做一些设置,如修改某些文件夹的属性和文件的权限,可在init.rc中增加service执行s ...

  2. linux中打开pdf文件_在Linux中减少PDF文件大小

    linux中打开pdf文件 In our Linux system, If we have a large PDF file, we may want to reduce it's size. We ...

  3. linux如何执行python文件_以linux命令执行Python文件 - python

    Closed. This question needs to be more focused.它当前不接受答案. 想改善这个问题吗?更新问题,使其仅通过editing this post专注于一个问题 ...

  4. java 序列化 文件_一种恢复Java序列化文件数据的方法与流程

    本发明涉及信息安全技术领域,特别涉及一种恢复Java序列化文件数据的方法. 背景技术: 在数据解析恢复领域经常会遇到序列化文件的解析.Java序列化是Java 自身提供的一种数据序列化方式,它允许开发 ...

  5. linux下mkdir头文件_整理Linux下gcc编译中关于头文件与库文件搜索路径相关问题

    态库./libpos.so. /root/test/env/lib/libpos.so和/root/test/conf/lib/libpos.so.我们再用源程序 pos_lib.c(见程序5)来创建 ...

  6. 会员系统 java源码_推荐会员管理系统JAVA源码

    [实例简介] 会员管理系统 struts+hibernate+spring 完整,可二次开发 推荐 [实例截图] [核心代码] 会员管理系统(strutshibernatespring) └── Co ...

  7. 疯狂讲义java 李刚_推荐:疯狂java讲义--李刚著作(4)

    >Java资料百度网盘 链接:https://pan.baidu.com/s/1IzjeTfM2SE5Ts9kRvS3huw 提取码:7wg9 >今日内容: >1.流程控制 > ...

  8. java反向映射_推荐一款Java对象映射神器,别再傻傻手动转换了!

    点击蓝色字免费订阅,每天收到这样的好信息 前言:最近有不少粉丝关注本公众号.并且我已经成功开通了流量主同时会赚一点点广告费,我打算每个月把这部分钱拿出来给大家买点书刊,算是给大家一点福利吧.大家想买什 ...

  9. java -jar 停止_推荐:Linux启动Java程序jar包Shell脚本

    每次启动Java程序jar包的时候,难道你还在手敲java -jar xxserver.jar--?边敲边想着都需要追加哪些参数? 今天就推荐给大家一个几乎通用的Shell脚本,它支持Java程序Ja ...

最新文章

  1. 51单片机c语言运算符,51单片机表达式语句的用法解析
  2. 1.13 抽象类和接口的区别
  3. html div标签的 class属性是干嘛用的?
  4. Hive SQL优化之 Count Distinct
  5. 单独运行shell脚本与crontab运行shell脚本的区别
  6. 如何撰写较受欢迎的技术文章
  7. css居中悬浮,CSS悬浮居中
  8. Exchange Server2010部署完后的配置:CA、Outlook Anywhere、OWA域名简写
  9. jdk1.8 Windows安装全过程详尽版
  10. 在scrapy中parse函数里面xpath的内容打印不出来_scrapy 爬虫爬取的数据json模式存储...
  11. 【kafka】Flink 消费 kafka Received unknown topic topic/partition may not exist Describe access to it
  12. docker ubuntu16安装
  13. 数论基本定理及应用(四)
  14. 9.数据库服务器部署之------3步实现远程访问
  15. 不会Netty,你也永远不会熟悉Java
  16. MySQL INFORMATION_SCHEMA信息数据库
  17. 李晨 | 无人机市场浅析
  18. 嵩天《Python网络爬虫与信息提取》实例1:Requests库网络爬虫实战5个实例
  19. win10共享打印机出现操作无法完成(错误0x00000709)解决办法
  20. java练习题(面向对象前两天练习作业(继承多态接口和抽象类))

热门文章

  1. JQuery+CSS3实现封装弹出登录框效果
  2. LCLFramework框架之Service模式
  3. 大数据的3V和三个层面
  4. SafeNet宣布推出其最小的圣天诺HASP硬件型软件保护锁
  5. 基本数据类型与表达式2 - 零基础入门学习Delphi03
  6. ORCAD常用元件库说明
  7. git clone的时候报error: RPC failed; result=18错误
  8. 云栖2050 —— 面向年青人的科技公益大会
  9. 该怎样才能将PDF转换成HTML
  10. Coursera algorithm II PA4