首页 > 其他分享 >自作服务启动脚本

自作服务启动脚本

时间:2023-07-07 15:37:16浏览次数:34  
标签:脚本 服务 启动 PID grep pid echo fi PATH

 

 

#!/bin/sh

#启动脚本 !/usr/bin/env bash       !/bin/sh
ROOT_DIR='/sdcard/server'
APP_PATH=${ROOT_DIR}/safebox-edge-service
PID_PATH=${ROOT_DIR}/service.pid
LOG_PATH=${ROOT_DIR}/log
CONFIG=${ROOT_DIR}/config.json
#使用说明,用来提示输入参数
usage() {
  echo "Usage: sh 执行脚本.sh [start|stop|restart|status] [dev]|[test]|[prod]"
  exit 1
}
#检查程序是否在运行
is_exist() {
  pid=$(ps -ef | grep $APP_PATH | grep -v grep | awk '{print $2}')
  #如果不存在返回1,存在返回0
  if [ -z "${pid}" ]; then
    return 1
  else
    return 0
  fi
}

#启动方法
start() {
  if [ ! -d "${LOG_PATH}" ]; then
    mkdir ${LOG_PATH}
  fi
  if [ -f "$PID_PATH" ]; then
    echo "Service is already start ..."
  else
    echo "Service  start ..."
    nohup ${APP_PATH} -c ${CONFIG} >${LOG_PATH}/log.out 2>&1 &
    printf '%d' $! >$PID_PATH
    echo "Service  start SUCCESS "
  fi
}

#停止方法
stop() {
  if [ -f "$PID_PATH" ]; then
    kill -9 $(cat $PID_PATH)
    rm -rf $PID_PATH
    echo "Service is stop SUCCESS!"
  else
    pid=$(ps -ef | grep -i ${APP_PATH} | grep -v grep | awk -F" " '{print $2}')
    if [ ! -z $pid ]; then
      echo "Service is already stop ..."
    else
      kill -9 $pid
      echo "Service is stop SUCCESS!"
    fi
  fi
}

#输出运行状态
status() {
  if [ -f "$PID_PATH" ]; then
    pid=$(cat "$PID_PATH")
    pid=$(ps -ef | grep $pid | grep -v "grep" | awk -F" " '{print $2}')
    if [ -z "$pid" ]; then
      echo "${APP_PATH} is NOT running."
    else
      echo "${APP_PATH} is running. Pid is ${pid}"
    fi
  else
    is_exist
    if [ $? -eq "0" ]; then
      echo "${APP_PATH} is NOT running."
    else
      echo "${APP_PATH} is running. Pid is ${pid}"
    fi
  fi
}

#重启
restart() {
  stop
  start
}

if [ $2 ]; then
  CONFIG=$2
fi

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

 

标签:脚本,服务,启动,PID,grep,pid,echo,fi,PATH
From: https://www.cnblogs.com/uestc2007/p/17535088.html

相关文章

  • redis 启动报错oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
    1:C07Jul202306:48:05.705#Redisversion=6.0.6,bits=64,commit=00000000,modified=0,pid=1,juststarted1:C07Jul202306:48:05.705#Configurationloaded1:C07Jul202306:49:07.098#oO0OoO0OoO0OoRedisisstartingoO0OoO0OoO0Oo1:C07Jul2023......
  • linux安装nacos设置开机自启动
    1.设置nacos配置文件1.1找到系统中java安装路径java-verbose最后一行就有java安装具体路径[root@master-nodejava]#vi/etc/profile#在末尾增加exportJAVA_HOME=/usr/local/java/openJDK-1.8exportPATH=$JAVA_HOME/bin:$PATHexportCLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$......
  • Nacos服务发现与注册源码剖析
    为什么要看源码:1、提升技术功底:学习源码里的优秀设计思想,比如一些疑难问题的解决思路,还有一些优秀的设计模式,整体提升自己的技术功底2、深度掌握技术框架:源码看多了,对于一个新技术或框架的掌握速度会有大幅提升,看下框架demo大致就能知道底层的实现,技术框架更新再快也不怕3、快速......
  • Linux安装ftp服务(详细)
    1、登录Xshell2、安装vsftpd查看是否已经安装过vsftpd了rpm-qa|grepvsftpd如果没安装过执行如下命令yum-yinstallvsftpd  3.修改vsftpd配置(关闭匿名访问)打开配置文件:vi/etc/vsftpd/vsftpd.conf将文件中 anonymous_enable=YES修改为:(代开后 按......
  • 在Linux环境下通过命令行执行JMeter脚本后查看响应结果的配置
    在Linux环境中进行性能测试时,我们可能会遇到一定程度的报错。如果无法打开JMeter的GUI界面,但又需要查看响应结果,可以按照以下步骤进行配置:1.打开JMeter的安装目录,在`bin/`目录下找到`jmeter.properties`配置文件。2.使用文本编辑器打开`jmeter.properties`文件,并在文件末尾添......
  • 解决“Host key verification failed”远程连接linux服务器 could not establish conn
    在使用vscode远程连接linux服务器时,遇到了个报错:couldnotestablishconnectionto我用的服务器是腾讯云轻应用。查了半天看到阿里云文档里有类似的解决方法,最后得到解决。发现是本地缓存的问题?使用SSH远程连接Linux系统的ECS实例时,提示“Hostkeyverificationfailed”错误怎......
  • centos8重启网络服务NetworkManager不能立即生效的问题
    一、使用vim编辑ifcfg-ens192网络配置文件,注释掉网关配置,模拟不能访问公网场景[root@localhost~]#vim/etc/sysconfig/network-scripts/ifcfg-ens192TYPE=EthernetPROXY_METHOD=noneBROWSER_ONLY=noBOOTPROTO=staticDEFROUTE=yesIPV4_FAILURE_FATAL=noIPV6INIT=yes......
  • nssm注册成win10平台的服务
    一条命令nssminstall服务名exe文件目录如:nssminstallwgcloud-agent-releaseE:\wgcloud-v3.3.5\agent\wgcloud-agent-release.exe然后找到服务手动启动一下就可以了,后面就会自动重启服务了。......
  • Spingboot启动jar包引用外部的yml配置文件
    Spingboot启动jar包引用外部的yml配置文件1、指定文件目录命令java-jarxxxxx.jar--spring.config.location=路径(application.yml)2、jar包目录下java-jarxxxx.jar2.1可以在当前Jar文件目录建config同级目录,这个config同级目录放入application.yml2.2也可以在当前......
  • IT运维的福音!WeOps综合服务让运维更简单
    国家十四五规划及2035年远景目标纲要提到,要加快数字经济、数字社会、数字政府等以数字化转型整体驱动生产方式、生活方式和治理方式变革。在数字化进程中,企业ERP系统、医院HIS系统、PICS系统、制造业MES系统等核心系统越发重要,对IT依赖度越来越高,对业务连续性保障、IT服务用户满意......