zoukankan      html  css  js  c++  java
  • run_iep_pss_usc.sh脚本总结

     APP_HOME=/home/sxylz/ggfw

    APP_NAME=$1
    # 使用说明,用来提示输入参数
    usage() {
      #Usage[可选内容]
      echo "Usage: sh boot [APP_NAME] [start|stop|restart|status]"
      exit 1
    }

    # 检查程序是否在运行
    #awk '{print $2}'提取第二列
    is_exist(){
      # 获取PID
      PID=$(ps -ef |grep ${APP_NAME} | grep -v $0 |grep -v grep |awk '{print $2}')
      # -z "${pid}"判断pid是否存在,如果不存在返回1,存在返回0
       # -z代表空串
      if [ -z "${PID}" ]; then
        # 如果进程不存在返回1
        return 1
      else
        # 进程存在返回0
        return 0
      fi
    }

    # 定义启动程序函数
    start(){
      is_exist
      #if [ $? -eq 0 ]该语句是什么含义? 解:代表上一个命令执行后的退出状态
      if [ $? -eq "0" ]; then
        echo "${APP_NAME} is already running, PID=${PID}"
      else
        #shell中“>/dev/null 2>&1”详解
        #shell中可能经常能看到:>/dev/null 2>&1
        #命令的结果可以通过 %> 的形式来定义输出,其中 %> 代表文件描述符
        #我们将这个命令组合:“>/dev/null 2>&1” 拆为四部分来分析下:
        #1:> 代表重定向到哪里,例如:echo "123" > /home/123.txt
        #2:首先 0> 表示stdin标准输入; 1> 表示stdout标准输出; 2> 表示stderr错误输出;
        #3:/dev/null 代表空设备文件
        #4:& 可以理解为是"等同于"的意思,2>&1,即表示2的输出重定向等同于1
        #5:1 表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于 "1>/dev/null"
        #因此,>/dev/null 2>&1 也可以写成“1> /dev/null 2> &1”
        #那么本文标题的语句执行过程为:
        #1>/dev/null :首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。
        #2>&1 :接着,将标准错误输出重定向 到 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。
        nohup java -jar ${APP_HOME}/${APP_NAME} >/dev/null 2>&1 &
        PID=$(echo $!)
        #pid=$!就是这个目录名后面跟上这个脚本的pid号
        echo "${APP_NAME} start success, PID=$!"
      fi
    }

    # 停止进程函数
    stop(){
      is_exist
      if [ $? -eq "0" ]; then
        kill -9 ${PID}
        echo "${APP_NAME} process stop, PID=${PID}"
      else
        echo "There is not the process of ${APP_NAME}"
      fi
    }

    # 重启进程函数
    restart(){
        stop
        start
    }

    # 查看进程状态
    status(){
      is_exist
      if [ $? -eq "0" ]; then
        echo "${APP_NAME} is running, PID=${PID}"
      else
        echo "There is not the process of ${APP_NAME}"
      fi
    }

    case $2 in
    "start")
        start
        ;;
    "stop")
        stop
        ;;
    "restart")
        restart
        ;;
    "status")
        status
        ;;
      *)
      usage
      ;;

    #esac是和case配对的bai,是多路分支的语句,类似于C中的 switch/case 语句
    esac
    exit 0

  • 相关阅读:
    Aizu 0033
    Aizu 0118
    【思维】贪心+细节——cf1361B
    【思维】构造+凸包+向量叉积——LEETCODE 游乐园的迷宫
    【思维】三元环计数+鸽笼定理/贪心——LEETCODE 游乐园的游览计划 好题
    dp+线性筛——LEETCODE切分数组
    【经典】带障碍的铺砖块——LEETCODE 覆盖
    【思维】树形dp+构造——leetcode二叉树任务调度
    【思维】状压dp—— 2020 联想杯 M
    【思维】建图+排列组合+预处理+最短路—— 2020 联想杯 E
  • 原文地址:https://www.cnblogs.com/curedfisher/p/13266660.html
Copyright © 2011-2022 走看看