当前位置: 代码网 > it编程>前端脚本>Python > Linux下一键启停Python服务脚本的超实用方法

Linux下一键启停Python服务脚本的超实用方法

2025年12月05日 Python 我要评论
在日常开发和部署 python web 服务(如 fastapi、flask、django、socket 服务等)时,经常需要频繁启动、停止、重启进程。如果每次都手动 ps -ef | grep 再

在日常开发和部署 python web 服务(如 fastapi、flask、django、socket 服务等)时,经常需要频繁启动、停止、重启进程。如果每次都手动 ps -ef | grepkill -9,实在是太麻烦了!

今天分享一个我自己用了好几年的「终极启停脚本」,功能完整、输出美观、逻辑健壮,直接扔到服务器上就能用,强烈建议收藏!

最终效果演示

$ ./manager.sh start
 ##: 启动成功(start successfully) ~

$ ./manager.sh stop
 ##: 已停止(stopped) ...

$ ./manager.sh restart
 ##: 已停止(stopped) ...
 ##: 启动成功(start successfully) ~

已经运行时重复启动会有友好提示:

$ ./manager.sh start
 ##: 服务已经在运行中(the service is already running)

完整脚本(已亲测可用)

将以下内容保存为 manager.sh(或者你喜欢的名字),放在项目根目录,和 server.py 同级:

#!/bin/bash

# 要管理的 python 服务文件名(可修改)
server_name="server.py"

# 彩色输出定义
red='\033[31m'
green='\033[32m'
yellow='\033[33m'
cyan='\033[36m'
reset='\033[0m'

start() {
    # 检查是否已有进程在运行(取第一个匹配的 pid)
    pid=$(ps -ef | grep -v grep | grep ${server_name} | awk 'nr==1{print $2}')
    
    if [[ -z "$pid" ]]; then
        echo -e "${yellow}正在启动 ${server_name} ...${reset}"
        nohup python3 ${server_name} > server.log 2>&1 &
        sleep 2  # 给进程一点启动时间
        
        # 再次检查是否真的启动成功
        pid=$(ps -ef | grep -v grep | grep ${server_name} | awk 'nr==1{print $2}')
        if [[ -n "$pid" ]]; then
            echo -e "${cyan} ##: 启动成功(start successfully) ~${reset}"
        else
            echo -e "${red} 启动失败(failed to activate),请查看 server.log${reset}"
        fi
    else
        echo -e "${green} ##: 服务已经在运行中(the service is already running),pid: $pid${reset}"
    fi
}

stop() {
    pid=$(ps -ef | grep -v grep | grep ${server_name} | awk 'nr==1{print $2}')
    
    if [[ -n "$pid" ]]; then
        kill -9 $pid
        echo -e "${green} ##: 已停止(stopped),pid $pid 已结束${reset}"
    else
        echo -e "${yellow} ##: 未检测到运行中的服务${reset}"
    fi
}

restart() {
    echo -e "${yellow}正在重启服务...${reset}"
    stop
    sleep 1
    start
}

# 使用说明
usage() {
    echo "usage: $0 {start|stop|restart}"
    exit 1
}

case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        restart
        ;;
    *)
        usage
        ;;
esac

exit 0

使用方法(三步搞定)

将脚本保存为 manager.sh

赋予执行权限:

chmod +x manager.sh

使用:

./manager.sh start    # 启动
./manager.sh stop     # 停止
./manager.sh restart  # 重启

脚本亮点总结

功能说明
防止重复启动检测到已有进程就提示,不再重复启动
彩色日志输出看起来舒服,状态一目了然
启动失败自动提示启动后会二次检查进程是否存在
支持 restart先 stop 再 start,一键重启
日志输出到 server.log后台运行不干扰终端,日志可随时查看
仅 50 行左右短小精悍,改起来也方便

可选增强(进阶玩家)

  • 想管理多个服务?把 server_name 改成参数传入即可
  • 想开机自启?配合 systemdcrontab -e@reboot
  • 想支持端口占用检测?加一句 lsof -i:8000

写在最后

这个脚本我从 2021 年用到现在,几乎所有个人项目和小公司服务器都在用,稳定得一批!

强烈建议每个 python 后端开发者都准备一个,省时省力又装逼(不是)

到此这篇关于linux下一键启停python服务脚本的超实用方法的文章就介绍到这了,更多相关linux启停python脚本内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com