通用程序部署shell脚本
简介
通常一个独立的服务,程序,中间件成后,为便于测试,上线部署都会编写一一个shell用于对程序的启动,重启 ,查看状态,停止,卸载 等动作, 以下是 一个使用shell脚本来实现的简单demo, 直接见代码。
功能
- 启动: start
- 重启: restart
- 停止:stop
- 卸载:uninstall
- 查看运行状态: status
- 获取程序版本号:version
代码
将代码中的 $YOUR_APP_NAME
替换成真实的程序文件名, shell文件名称: manager.sh
#!/bin/bash mode=$1 # uninstall/start/restart/stop/status/version ############################################################################### function echo_red() { echo -e "\033[1;31m$1\033[0m" } function echo_green() { echo -e "\033[1;32m$1\033[0m" } function echo_yellow() { echo -e "\033[1;33m$1\033[0m" } function echo_done() { sleep 0.5 echo "$(gettext 'complete')" } function echo_failed() { echo_red "$(gettext 'fail')" } function log_success() { echo_green "[+] $1" } function log_error() { echo_red "[x] $1" } install() { log_success "deploy the program ..." nohup ./$YOUR_APP_NAME -c APP_CONFIG.yml >/dev/null 2>&1 & sleep 10 n=$(ps aux | grep -v grep | grep $YOUR_APP_NAME -c) if [ $n -eq 0 ]; then log_error "no $YOUR_APP_NAME is running ..." return 0 fi log_success "install done!" } stop() { n=$(ps aux | grep -v grep | grep $YOUR_APP_NAME -c) if [ $n -eq 0 ]; then return fi log_success "stop YOUR_APP_NAME ..." ps aux | grep '$YOUR_APP_NAME' | grep -v grep | awk '{print $1}' | xargs kill -9 sleep 5 n=$(ps aux | grep -v grep | grep $YOUR_APP_NAME -c) if [ $n -eq 0 ]; then log_success "no $YOUR_APP_NAME is running ..." fi return 0 } status() { n=$(ps aux | grep -v grep | grep $YOUR_APP_NAME -c) if [ $n -eq 0 ]; then log_success "no $YOUR_APP_NAME is running ..." else log_success "$YOUR_APP_NAME is running ..." fi return 0 } uninstall_service() { stop # 清理逻辑,删除程序生成的文件 rm -f ./$YOUR_APP_NAME.db rm -rf ./log log_success "uninstall done!" } restart_service() { stop install log_success "restart done!" } // 获取程序版本号 version (){ ./$YOUR_APP_NAME --version } # usage,使用说明书 function usage() { echo gettext '$YOUR_APP_NAME Deployment Management Script ' echo echo "Usage: " echo " ./manager.sh [COMMAND] " echo " ./manager.sh --help" echo echo "Management Commands [# 服务管理指令]: " echo " start $(gettext 'Start $YOUR_APP_NAME [# 启动]')" echo " stop $(gettext 'Stop $YOUR_APP_NAME [# 停止]')" echo " restart $(gettext 'Restart $YOUR_APP_NAME [# 重启]')" echo " status $(gettext 'Check $YOUR_APP_NAME [# 检查状态]')" echo " uninstall $(gettext 'Uninstall $YOUR_APP_NAME [# 卸载] ')" echo echo "Check Version Commands [# 查看版本信息]: " echo " version $(gettext 'Version Info [# 查看软件版本信息]')" } ############################################################################## # main if [ $(id -u) -ne "0" ]; then log_error "ERROR: This script must be run as root." 1>&2 exit 1 fi case $mode in "start") install ;; "status") status ;; "stop") stop ;; "version") version ;; "restart") restart_service ;; "uninstall") uninstall_service ;; "help") usage ;; "--help") usage ;; "-h") usage ;; *) echo "No such command: ${action}" usage ;; esac exit 0
使用
-
启动:
sh manager.sh start
# 输出效果如下 [+] deploy the program ... [+] install done! -
重启:
sh manager.sh restart
# 输出效果如下 [+] stop $YOUR_APP_NAME ... [+] deploy the program ... [+] install done! [+] restart done! -
停止:
sh manager.sh stop
# 输出如下 [+] stop $YOUR_APP_NAME ... -
卸载:
sh manager.sh uninstall
-
查看版本号:
sh manager.sh version
#输出如下: XXX agent API service. The Version: 0.2.2 -
帮助手册:
sh manager.sh --help
# 输出如下 gettext $YOU_APP_NAME Deployment Management Script Usage: ./manager.sh [COMMAND] ./manager.sh --help Management Commands [# 服务管理指令]: start Start $YOU_APP_NAME [# 启动] stop Stop $YOU_APP_NAME [# 停止] restart Restart $YOU_APP_NAME [# 重启] status Check $YOU_APP_NAME [# 检查状态] uninstall Uninstall $YOU_APP_NAME [# 卸载] Check Version Commands [# 查看版本信息]: version Version Info [# 查看软件版本信息]
♥永远年轻,永远热泪盈眶♥
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· RFID实践——.NET IoT程序读取高频RFID卡/标签