自定义服务运行管理命令
启动服务有 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 }