zoukankan      html  css  js  c++  java
  • 自定义服务运行管理命令

    启动服务有 servcie <service-name> start 和 systemctl start <service-name> 两个命令,两种形式。正好,我有时候有启动服务,有时候想启动命令,借鉴这两种命令格式。

    其中,start 会自动 resart,当然,通用服务都是用 service 命令启动,所以也支持 restart 动作,只是自定义的启动命令,我只用了 start 和 stop 两个动作。

    ####################################################################################
    # 服务运行两种命令形式,如:
    # srv <name> [start]|stop 表示启动/停止服务
    # srv start|stop <name> 表示启动/停止 dokcer 容器
    ####################################################################################
    function srv(){
    
        case "$1" in
            'php')
                case "$2" in
                    'start')  srv php stop 1>/dev/null 2>&1; sudo php-fpm;;
                    'stop')   sudo pkill -9 php-fpm;;
                    *)        srv php start;;
                esac 
            ;;
            'nginx')   
                case "$2" in    
                    'start')  srv nginx stop 1>/dev/null 2>&1; sudo nginx;;
                    'stop')   sudo nginx -s stop;;
                    *)        srv nginx start;;
                esac
            ;;
            'web')  srv php start; srv nginx start;;
    
            'start'|'stop')
                [ -z "$2" ] && { srv docker "$1"; }
                [ "$2" == "all" ] && set -- $1 $(docker ps -qf status=exited)
    
                [ -n "$2" ] && {
                  [ "$1" == 'start' ] && docker stop "$2" 1>/dev/null 2>&1
                  docker "$@"
                }
            ;;
            *)  
                [ "$1" == 'mysql' ] && { shift 1; set -- mysqld $@; }
                [ $# == 1 ] && set -- $1 'start'
                [ "$2" == 'start' ] && sudo service "$1" stop 1>/dev/null 2>&1
                sudo service "$@"
            ;;        
        esac
    
    }
    
    
    ####################################################################################
    # 同时启动多个服务如:
    # start php nginx mysql 表示启动服务
    # start -c php nginx mysql 选项 -c 表示启动的是容器
    ####################################################################################
    function start(){
        local c=0
        [ "$1" == '-c' ] && { c=1; shift 1; }
        [ -z "$1" ] && set -- docker
        for item in "$@";do
            if [ "$c" == 1 ];then
                srv start $item
            else
                srv $item start
            fi
        done
    }
    
    ####################################################################################
    # 同时停止多个服务如:
    # stop php nginx mysql 表示停止服务
    # stop -c php nginx mysql 选项 -c 表示停止的是容器
    ####################################################################################
    function stop(){
        local c=0
        [ "$1" == '-c' ] && { c=1; shift 1; }
        [ -z "$1" ] && set -- docker
        for item in "$@";do
            if [ "$c" == 1 ];then
                srv stop $item
            else
                srv $item stop
            fi
        done
    }
  • 相关阅读:
    如何将伪数组转换成真正的数组
    JS 中对变量类型的五种判断方法
    ajax详解
    onload和ready的区别
    ES5继承
    跨域的三种解决方式
    如何处理使用js兼容所有浏览器的问题
    Canvas修行之黑客帝国代码雨
    Webpack+React+ES6入门指南[转]
    对于Mongodb数据库的学习
  • 原文地址:https://www.cnblogs.com/zbseoag/p/14321267.html
Copyright © 2011-2022 走看看