04 Shell(四)完整版 启动jar包

一、Shell脚本

#!/bin/bash
#jar包所在路径
JAR_HOME=/usr/demo/quartz-adg-0.0.1-SNAPSHOT.jar
LOG_NAME=adg
#输入错误时,提示内容
usage() {
    echo "输入格式: sh launcher.sh [start|stop|restart|status]"
    exit 1
}

#检查程序是否在运行
is_exist(){
  pid=`ps -ef|grep $JAR_HOME|grep -v grep|awk '{print $2}'`
  #如果不存在返回1,存在返回0     
  if [ -z "${pid}" ]; then
   return 1
  else
    return 0
  fi
}

#启动
start(){
  is_exist
  if [ $? -eq 0 ]; then
    echo "${JAR_HOME} is already running. pid=${pid}"
  else
    nohup java -jar ${JAR_HOME}  >/usr/demo/${LOG_NAME}.out 2>&1 &
    tail -40f adg.out
    echo "[start----ok!]"
  fi
}

#停止
stop(){
  is_exist
  if [ $? -eq "0" ]; then
    kill -9 $pid
    echo "[stop----down!]"
  else
    echo "${JAR_HOME} is not running"
  fi  
}

#输出运行状态
status(){
  is_exist
  if [ $? -eq "0" ]; then
    echo "${JAR_HOME} is running. Pid is ${pid}"
  else
    echo "${JAR_HOME} is NOT running."
  fi
}

#重启
restart(){
  stop
  sleep 5
  start
  echo "[ok!]"
}

#根据输入参数,选择执行对应方法,其他则执行usage
case "$1" in
  "start")
    start
    ;;
  "stop")
    stop
    ;;
  "status")
    status
    ;;
  "restart")
    restart
    ;;
  *)
    usage
    ;;
esac

二、效果图示

三、脚本说明

1、 ps -ef|grep

ps命令将某个进程显示出来;

grep命令是查找;

中间的|是管道命令 是指ps命令与grep同时执行;

脚本中 ps -ef|grep /usr/demo/quartz-adg-0.0.1-SNAPSHOT.jar 就是用来检查该java进程是否存在;

2、grep -v grep

在文档中过滤掉包含有grep字符的行。

3、awk

是一种处理文本文件的语言,是一个强大的文本分析工具。

后续再详细介绍。

在这里 awk '{print $2}' 是指每行按空格或TAB分割,输出文本中的2项,也就是 5429

4、[ -z "${pid}" ]

-z检测pid是否存在,不存在返回真,存在返回假。

 

四、遇到的问题

  • 端口被占用

(sudo netstat -antup)如果是root账户 输入netstat -antup 查看对应端口的PID,然后执行 kill -9 该Pid 即可;

  • PID

线程进程都会有自己的ID,这个ID就叫做PID,PID是不特指进程ID,线程ID也可以叫做PID。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值