shell 实战 -- 基于一个服务启动,关闭,状态检查的脚本

功能说明:

  • check:检查服务状态,在开启,关闭,状态检查时都会用到这个函数,因此封装起来放到最前面
  • start:开启服务
  • stop:关闭服务
  • fstop:强制关闭
  • status:检查服务状态
  • running:查看全部正在运行的状态

 

使用说明:

开启服务:python

启动一个进程监听 9000(默认)端口:centos

  • sh standard_server.sh start

 

启动一个进程监听 8000(自定义)端口:bash

  • 格式: sh standard_server.sh start ipaddress port
  • sh standard_server.sh start 10.10.4.200 8000


关闭服务:函数

关闭监听 9000(默认)端口:spa

  • sh standard_server.sh stop

 

关闭监听 8000(自定义)端口:rest

  • 格式: sh standard_server.sh stop ipaddress port
  • sh standard_server.sh stop 10.10.4.200 8000


查看监听状态:code

查看 9000 端口(默认)监听状态:server

  • sh standard_server.sh status

 

查看 8000端口(自定义)监听状态:blog

  • 格式: sh standard_server.sh status ipaddress port
  • sh standard_server.sh status 10.10.4.200 8000

 

查看全部正在监听端口:进程

  • sh standard_server.sh running

 

代码部分:

#!/bin/bash # author: ck check() { if (($(ps aux|grep manage.py| grep "${port:-9000}" |grep -v grep|wc -l) == 0));then # stopped return 1; else # running return 0; fi } start() { check if (($? == 1));then echo -n "standard server ${port:-9000} to start......" path=$(dirname $0) if [[ $path != '.' ]];then cd $path fi # nohup /home/seemmo/share/python/centos/python3.6.6/bin/python3 manage.py start_server -h "${host:-0.0.0.0}" -p "${port:-9000}" -k wf >nohup.out 2>&1 & nohup python3 manage.py start_server -h "${host:-0.0.0.0}" -p "${port:-9000}" -k wf >nohup.out 2>&1 & while true do check if (($? == 1));then echo -n '...' sleep 1 else echo -e '\033[32mstarted\033[1m\033[0m' break fi done else echo "standard server ${port:-9000} has been running!!!" fi } fstop() { check if (($? == 1));then echo "standard server ${port:-9000} has been stopped!!!" else echo -n "standard server ${port:-9000} force to stop....." ps aux|grep manage.py |grep "${port:-9000}" |grep -v grep|awk '{print $2}'|xargs kill -9 while true do check if (($? == 1));then echo -e '\033[32mstopped\033[1m\033[0m' break else echo -n '...' sleep 1 fi done fi } stop() { check if (($? == 1));then echo "standard server ${port:-9000} has been stopped!!!" else echo -n "standard server ${port:-9000} to stop....." spid=1 tp_list=($(ps aux|grep manage.py |grep "${port:-9000}" |grep -v grep|awk '{print $2}'|xargs)) for tpid in ${tp_list[@]} do if ((spid == 1));then spid=$tpid elif ((tpid < spid));then spid=$tpid fi done kill -15 $spid retry_time=3 while true do if ((retry_time == 0));then echo fstop break fi check if (($? == 1));then echo -e '\033[32mstopped\033[1m\033[0m' break else ((retry_time=retry_time-1)) echo -n '.' sleep 1 fi done fi } status() { check if (($? == 1));then echo -e "standard server ${port:-9000} now is \033[32mstopped\033[1m\033[0m" else echo -e "standard server ${port:-9000} now is \033[32mrunning\033[1m\033[0m" fi } running() { port_list=$(ps aux | grep "manage.py" | grep -v "grep" |awk '{print $17}' |xargs) for port in ${port_list} do echo -e "standard server ${port} now is \033[32mrunning\033[1m\033[0m" done } restart() { check if (($? == 1));then start else stop while true do check if (($? == 1));then start break else sleep 1 fi done fi } if (($# == 1)) || (($# == 3));then if (($# == 3));then host=$2 port=$3 fi case $1 in start|stop|status|restart|fstop|running) $1 ;; *) if (($# == 1));then echo "Usage: bash $0 {start|stop|status|restart|fstop|running}" exit 2 else echo "Usage: bash $0 {start|stop|status|restart|fstop|running} host port" exit 2 fi esac else echo "Usage: bash $0 {start|stop|status|restart|fstop|running} host port" exit 2 fi

 

 

 

ending ~

相关文章
相关标签/搜索