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

 更新时间:2025年12月05日 09:18:18   作者:weixin_46244623  
这篇文章主要为大家详细介绍了Linux下一键启停Python服务脚本的超实用方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

在日常开发和部署 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脚本内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SSH 上传文件及文件夹到linux服务器的方法

    SSH 上传文件及文件夹到linux服务器的方法

    这篇文章主要介绍了SSH 上传文件及文件夹到linux服务器的方法,需要的朋友可以参考下
    2018-07-07
  • Linux Shell脚本如何获取当前路径

    Linux Shell脚本如何获取当前路径

    本文介绍了在脚本中获取当前运行目录的方法,通过使用`dirname $0`、`cd $(dirname $0)`和`pwd`命令,可以方便地获取脚本的绝对路径,文中还提供了一个测试示例,验证了该方法的有效性,此外,作者还提到直接使用`pwd`命令也是一种简单有效的获取当前目录的方法
    2025-11-11
  • Linux服务器安装GRUB步骤

    Linux服务器安装GRUB步骤

    在本篇文章中我们给大家整理了Linux服务器安装GRUB的详细步骤以及相关注意事项,有需要的朋友们参考下。
    2018-09-09
  • Linux进程管理与计划任务详解

    Linux进程管理与计划任务详解

    文章讲解了Linux进程管理与计划任务的核心知识,涵盖程序与进程的区别、ps/top等监控工具参数、进程控制(启动/挂起/终止)及at/crontab计划任务配置,强调系统自动化运维的重要性
    2025-08-08
  • Linux服务器出现崩溃或异常的故障排查和急救指南

    Linux服务器出现崩溃或异常的故障排查和急救指南

    当 Linux 服务器出现崩溃或异常时,及时有效的故障排查是至关重要的,以下是一个综合性的急救指南,帮助你在遇到问题时进行快速的故障排查和修复,需要的朋友可以参考下
    2025-11-11
  • Linux文件共享与存储:NFS、Samba与CIFS的使用方法

    Linux文件共享与存储:NFS、Samba与CIFS的使用方法

    这篇文章主要介绍了在Linux环境中配置和使用NFS、Samba和CIFS文件共享服务的完整技能,从基础的共享配置到高级的性能优化和安全设置的相关资料,需要的朋友可以参考下
    2025-10-10
  • Linux如何使用docker方式搭建SQL Server

    Linux如何使用docker方式搭建SQL Server

    这篇文章主要介绍了Linux如何使用docker方式搭建SQL Server问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • 详解在Ubuntu下搭建FTP服务器

    详解在Ubuntu下搭建FTP服务器

    这篇文章主要介绍了详解在Ubuntu下搭建FTP服务器,,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2016-12-12
  • Linux查看和修改MAC地址的方法大全

    Linux查看和修改MAC地址的方法大全

    MAC地址是网络设备(如网卡、无线网卡等)的唯一识别标识,在Linux系统中,我们可以通过修改MAC地址来实现一些网络方面的需求,比如伪装成其他设备,实现身份隐藏等,本文将介绍在Linux系统下如何查看和修改MAC地址,需要的朋友可以参考下
    2025-10-10
  • Linux命令之nmcli命令的使用及说明

    Linux命令之nmcli命令的使用及说明

    文章介绍了NetworkManager的命令行工具nmcli,它用于管理和配置网络连接,支持多种网络类型,并提供了丰富的命令用于查看、配置、启用和禁用网络连接,文中还列举了使用示例和语法说明,帮助读者更好地掌握nmcli的使用方法
    2026-04-04

最新评论