自定义服务运行管理命令
启动服务有 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 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术