Shell脚本实现简单的进程管理器

Shell脚本实现简单的进程管理器

需求

现在我用python写了一个前后端分离项目,每次启动都需要使用python3+脚本名称,杀死进程时还需要ps -ef | grep 脚本名称,显得非常的麻烦,考虑用shell脚本实现一个简单的进程管理器,方便管理进程

进程管理器实现

  1. 定义启动后端和前端的函数

    start_back_end() {  
        echo "正在启动后端..."  
        nohup python3 start_back_end.py &  
        sleep 1  # 等待一段时间确保进程已经启动
        echo "后端启动成功"
    }  
    
    # 定义启动前端的函数  
    start_front_end() {  
        echo "正在启动前端..."  
        nohup python3 start_front_end.py &  
        sleep 1  # 等待一段时间确保进程已经启动
        echo "前端启动成功"
    }  
    
    
  2. 定义停止后端和前端的函数

    # 定义停止后端的函数  
    stop_back_end() {  
        echo "正在停止后端..."  
        pkill -f start_back_end.py  
        sleep 1  # 等待一段时间确保进程已经停止
        echo "后端停止成功"
    }  
      
    # 定义停止前端的函数  
    stop_front_end() {  
        echo "正在停止前端..."  
        pkill -f start_front_end.py  
        sleep 1  # 等待一段时间确保进程已经停止
        echo "前端停止成功"
    }  
    
  3. 定义重启后端和前端的函数

    # 定义重启后端的函数  
    restart_back_end() {  
        stop_back_end  
        sleep 1  # 等待一段时间确保进程已经停止  
        start_back_end  
    }  
      
    # 定义重启前端的函数  
    restart_front_end() {  
        stop_front_end  
        sleep 1  # 等待一段时间确保进程已经停止  
        start_front_end  
    }  
    
  4. 定义显示启动说明的函数

    usage() {  
        echo "使用说明:"  
        echo "  $0 start       - 启动前端和后端"  
        echo "  $0 stop        - 停止前端和后端"  
        echo "  $0 restart     - 重启前端和后端"  
        echo "  $0 start-fe    - 仅启动前端"  
        echo "  $0 stop-fe     - 仅停止前端"  
        echo "  $0 restart-fe  - 仅重启前端"  
        echo "  $0 start-be    - 仅启动后端"  
        echo "  $0 stop-be     - 仅停止后端"  
        echo "  $0 restart-be  - 仅重启后端"  
    }  
    
  5. 主逻辑

    # 主逻辑  
    if [ "$#" -ne 1 ]; then  
        usage  
        exit 1  
    fi  
      
    case "$1" in  
        start)  
            start_front_end  
            start_back_end  
            ;;  
        stop)  
            stop_front_end  
            stop_back_end  
            ;;  
        restart)  
            restart_front_end  
            restart_back_end  
            ;;  
        start-fe)  
            start_front_end  
            ;;  
        stop-fe)  
            stop_front_end  
            ;;  
        restart-fe)  
            restart_front_end  
            ;;  
        start-be)  
            start_back_end  
            ;;  
        stop-be)  
            stop_back_end  
            ;;  
        restart-be)  
            restart_back_end  
            ;;  
        *)  
            usage  
            exit 1  
            ;;  
    esac
    
  6. 脚本全部内容

    #!/bin/bash  
      
    # 定义启动后端的函数  
    start_back_end() {  
        echo "正在启动后端..."  
        nohup python3 start_back_end.py &  
        sleep 1  # 等待一段时间确保进程已经启动
        echo "后端启动成功"
    }  
      
    # 定义启动前端的函数  
    start_front_end() {  
        echo "正在启动前端..."  
        nohup python3 start_front_end.py &  
        sleep 1  # 等待一段时间确保进程已经启动
        echo "前端启动成功"
    }  
      
    # 定义停止后端的函数  
    stop_back_end() {  
        echo "正在停止后端..."  
        pkill -f start_back_end.py  
        sleep 1  # 等待一段时间确保进程已经停止
        echo "后端停止成功"
    }  
      
    # 定义停止前端的函数  
    stop_front_end() {  
        echo "正在停止前端..."  
        pkill -f start_front_end.py  
        sleep 1  # 等待一段时间确保进程已经停止
        echo "前端停止成功"
    }  
      
    # 定义重启后端的函数  
    restart_back_end() {  
        stop_back_end  
        sleep 1  # 等待一段时间确保进程已经停止  
        start_back_end  
    }  
      
    # 定义重启前端的函数  
    restart_front_end() {  
        stop_front_end  
        sleep 1  # 等待一段时间确保进程已经停止  
        start_front_end  
    }  
      
    # 显示使用说明的函数  
    usage() {  
        echo "使用说明:"  
        echo "  $0 start       - 启动前端和后端"  
        echo "  $0 stop        - 停止前端和后端"  
        echo "  $0 restart     - 重启前端和后端"  
        echo "  $0 start-fe    - 仅启动前端"  
        echo "  $0 stop-fe     - 仅停止前端"  
        echo "  $0 restart-fe  - 仅重启前端"  
        echo "  $0 start-be    - 仅启动后端"  
        echo "  $0 stop-be     - 仅停止后端"  
        echo "  $0 restart-be  - 仅重启后端"  
    }  
      
    # 主逻辑  
    if [ "$#" -ne 1 ]; then  
        usage  
        exit 1  
    fi  
      
    case "$1" in  
        start)  
            start_front_end  
            start_back_end  
            ;;  
        stop)  
            stop_front_end  
            stop_back_end  
            ;;  
        restart)  
            restart_front_end  
            restart_back_end  
            ;;  
        start-fe)  
            start_front_end  
            ;;  
        stop-fe)  
            stop_front_end  
            ;;  
        restart-fe)  
            restart_front_end  
            ;;  
        start-be)  
            start_back_end  
            ;;  
        stop-be)  
            stop_back_end  
            ;;  
        restart-be)  
            restart_back_end  
            ;;  
        *)  
            usage  
            exit 1  
            ;;  
    esac
    

脚本运行效果

  1. 启动进程

    ./control.sh start
    

    在这里插入图片描述

  2. 结束进程

    ./control.sh stop
    

    在这里插入图片描述

  3. 重启进程

    ./control.sh restart
    

    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MC皮蛋侠客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值