• 自定义服务运行管理命令


    启动服务有 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
    }
  • 相关阅读:
    PHP 构造方法 __construct()(转)
    PHP笔记
    php的print_r第二个参数是true有啥用啊
    如何给类或方法规范地注释
    详解spl_autoload_register()  函数(转)
    PHP中文网上的分页代码
    echo 0000
    [csu/coj 1619] 递归
    [csu/coj 1083]贪心
    [csu/coj 1078]多个序列的最长公共子序列
  • 原文地址:https://www.cnblogs.com/zbseoag/p/14321267.html
Copyright © 2020-2023  润新知