【Python】管理Python脚本的执行:一个实用的启动脚本解决方案

49 篇文章 0 订阅

当家乡入冬 的时候
列车到站 以后
小时候的风 再吹过
回忆起单纯 的快乐
在熟悉的 街头
有人 会用所有的温柔 喊出你的
名字
                     🎵 毛不易《无名的人》


在开发和维护Python应用时,我们常常需要在后台运行和管理多个Python脚本。无论是数据处理、网络服务还是任何自动化任务,一个可靠且灵活的启动脚本都是提高工作效率和确保系统稳定运行的关键。本文将介绍一个实用的启动脚本解决方案,用于控制Python脚本的启动和停止,帮助你简化管理流程。

脚本概览

我们设计的脚本提供了一种简单的方式来启动和停止指定的Python脚本。通过声明一个名为scripts的关联数组,你可以轻松配置要管理的脚本及其执行路径。该脚本利用nohup&使Python脚本在后台运行,同时将输出重定向到指定的日志文件中,便于后续查看和问题排查。

#!/bin/bash

# 配置Python环境路径
PYTHON_ENV="/path/to/your/python/environment/bin/python"
# 配置应用目录
APP_DIR="/path/to/your/application/directory"
# 配置日志目录
LOG_DIR="$APP_DIR/log"

# 定义要管理的Python脚本名称和对应日志文件名
declare -A scripts=(
    ["testScript1"]="test_script1.py"
    ["testScript2"]="test_script2.py"
)

# 停止脚本函数
stop_scripts() {
    for script in "${!scripts[@]}"; do
        echo "Stopping $script..."
        PID=$(ps -ef | grep "${scripts[$script]}" | grep -v grep | awk '{print $2}')
        if [ ! -z "$PID" ]; then
            kill -9 $PID
            echo "已经kill进程: $PID"
        else
            echo "$script 未运行."
        fi
    done
}

# 启动脚本函数
start_scripts() {
    for script in "${!scripts[@]}"; do
        echo "Starting $script..."
        nohup $PYTHON_ENV $APP_DIR/${scripts[$script]} > $LOG_DIR/${script}.log 2>&1 &
        echo "$script 启动完成."
    done
}

# 主逻辑
case "$1" in
    start)
        start_scripts
        ;;
    stop)
        stop_scripts
        ;;
    *)
        echo "Usage: $0 {start|stop}"
        exit 1
        ;;
esac

脚本配置

脚本的配置包含三个主要部分:Python环境路径、应用目录和日志目录。通过修改脚本顶部的变量值来适配你的环境设置:

  • PYTHON_ENV:指向你的Python环境的可执行文件路径。
  • APP_DIR:包含你的Python脚本的目录。
  • LOG_DIR:用于存放日志文件的目录。

脚本功能

脚本提供了两个主要功能:启动和停止脚本。

  • 启动脚本:遍历scripts数组,使用nohup在后台启动每个指定的Python脚本,并将其输出重定向到日志文件。
  • 停止脚本:查找scripts数组中每个脚本对应的进程ID,并使用kill -9命令强制停止它们。
    使用方法
    脚本的使用非常简单,只需通过命令行传入一个参数startstop来启动或停止所有配置的Python脚本:
./script_name.sh start # 启动所有配置的脚本
./script_name.sh stop  # 停止所有运行中的脚本

实践建议

  • 配置管理:为了提高脚本的可维护性,可以将脚本配置信息存放在外部文件中,通过源命令(source)加载这些配置。
  • 日志管理:定期检查和管理日志文件,以防止日志文件占用过多磁盘空间。
    安全性:在使用kill -9强制停止进程时要谨慎,确保不会意外终止其他重要进程。

结论

通过使用这个启动脚本,你可以更高效地管理Python脚本的执行,无论是在开发环境还是生产环境中。它不仅简化了启动和停止脚本的流程,还为日志管理和问题排查提供了便利。希望这个解决方案能够帮助你更好地管理和维护你的Python应用。

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值