python and shell

PHPer 2025-09-23 7 0 0

python and shell

shell and python ...

立即注册

更新于:2025-09-23 03:54:45
    您需要登录后才可以评论。 立即注册

    为什么使用副 shell 脚本生成 Python 文件

    你提到的“用主 shell 脚本先生成一个副的 shell 脚本,再让这个副的 shell 脚本去创建 python 的文件并运行做监控”的做法可能有以下几种原因:

    动态配置:通过这种方式可以在运行时动态生成和配置 Python 脚本,根据不同的环境或参数生成不同的监控逻辑。

    权限管理:在某些情况下,可能需要以不同的用户或权限运行 Python 脚本。通过生成副 shell 脚本来执行 Python 脚本,可以更灵活地管理权限。

    模块化设计:将生成 Python 脚本的逻辑放在副 shell 脚本中,可以使主脚本更加简洁和模块化,便于维护和扩展。

    隔离作用域:副 shell 脚本可以提供一个独立的作用域,避免变量和函数命名冲突,提高代码的健壮性。

    示例:使用副 shell 脚本生成 Python 文件

    假设我们有一个主 shell 脚本 main.sh 和一个副 shell 脚本 sub.sh,main.sh 会调用 sub.sh 来生成并运行 Python 脚本。

    main.sh

    #!/bin/bash
    
    # 定义常量和变量
    PYTHON_SCRIPT="/tmp/python_monitor.py"
    SPEED_THRESHOLD_KBPS=200.0
    CHECK_INTERVAL=5
    
    # 生成副 shell 脚本
    cat << EOF > /tmp/sub.sh
    #!/bin/bash
    
    # 生成 Python 监控脚本
    cat << EOP > $PYTHON_SCRIPT
    #!/usr/bin/env python3
    import sys
    import time
    import re
    
    LOG_FILE = sys.argv[1]
    THRESHOLD_KBPS = float(sys.argv[2])
    CHECK_INTERVAL = float(sys.argv[3])
    ZERO_SPEED_THRESHOLD = 5
    
    def parse_log_speed(log_file):
        with open(log_file, 'r') as file:
            content = file.read()
            match = re.search(r'\[(Python Monitor)\] 当前速度: (\d+\.\d+) KB/s', content)
            if match:
                return float(match.group(2))
            else:
                return 0.0
    
    def main():
        zero_speed_count = 0
    
        while True:
            speed = parse_log_speed(LOG_FILE)
            print(f"[Python Monitor] 当前速度: {speed:.1f} KB/s, 阈值: {THRESHOLD_KBPS} KB/s", file=sys.stderr)
    
            if speed > 0 and speed < THRESHOLD_KBPS:
                print("[Python Monitor] 速度过低,触发换源信号!", file=sys.stderr)
                sys.exit(1)
            elif speed == 0:
                zero_speed_count += 1
                if zero_speed_count >= ZERO_SPEED_THRESHOLD:
                    print("[Python Monitor] 连续多次检测到零速度,触发换源信号!", file=sys.stderr)
                    sys.exit(1)
            else:
                zero_speed_count = 0
    
            time.sleep(CHECK_INTERVAL)
    
    if __name__ == '__main__':
        try:
            main()
        except KeyboardInterrupt:
            sys.exit(0)
    EOP
    
    # 确保 Python 脚本可执行
    chmod +x $PYTHON_SCRIPT
    
    # 运行 Python 监控脚本
    $PYTHON_SCRIPT "\$DOWNLOAD_LOG" "$SPEED_THRESHOLD_KBPS" "$CHECK_INTERVAL"
    EOF
    
    # 确保副 shell 脚本可执行
    chmod +x /tmp/sub.sh
    
    # 运行副 shell 脚本
    /tmp/sub.sh
    

    这样,main.sh 会生成并运行 sub.sh,而 sub.sh 会生成并运行 Python 监控脚本。这种设计使得整个流程更加灵活和模块化。 ...

    立即注册
    更新于:2025-09-23 03:55:12
    相关内容

    python 和 conda

    启动powershell,conda 自动激活base

    python 报错整理2

    给出一份「Python 中常见 import 名称 与 pip install 名称不一致」的速查表

    Windows用Conda创建环境报错 CondaToSNonInteractiveError: Terms of Se...

    快速验证顺序是否被改

    Python 学习整理2

    fastapi-speaker-extractor whisperx 项目报错 ValueError: The chosen ...

    python报错 UnicodeEncodeError: 'gbk' codec can't encode character '\u...

    python whisperx 报错 in load_align_model raise ValueError(f'The ch...

    pyannote/embedding 模型是真难引入模型

    Trae 或者是我自己 莫名奇妙创建了个文件,影响了项目代码的运行。

    WhisperX 无法加载模型

    HUGGINGFACE_HUB_CACHE 设置错误导致的问题

    Trae的bug太多了,怪不得免费

    通义之旅

    通义之旅2

    目标说话人声音提取模型训练的思路

    python报错 can't convert cuda:0 device type tensor to numpy. Use Tenso...

    Expected all tensors to be on the same device, but found at least two ...

    腾讯元宝推荐的项目结构(音频处理项目)

    音频处理项目fse

    各种python 相关命令

    python 报错 SyntaxError: 'return' outside function

    python常用命令

    腾讯编程助手

    python一些扩展兼容安装的处理方案

    AI和Python 学习整理

    AudioSeparationGUI 对输入的音频,自动根据说话人进行分类 20250817

    SoloSpeech 项目安装和运行测试 20250817

    python 多项目部署 优先考虑用Anaconda

    espnet 声音分离

    ClearerVoice-Studio 安装测试遇到的问题,安装pysptk一直失败

    uvr5 bs roformer 爆显存以及关于huggingface的国内镜像hf-mirror.com

    用Kimi编程

    Studio One 调试插件Techivation AI-Rack 一键智能混音

    在hf-mirror.com模型镜像站用代码下载模型遇到报错 speaker-diarization模型不...

    用腾讯元宝编程

    Conda国内镜像源

    数字对象标识符 (DOI)

    在创建conda环境时,如果不指定Python版本,conda将不会默认安装Python。

    whisperx 的使用 音频处理

    Win10系统 Trae的使用 关于powershell报错: 因为在此系统上禁止运行脚本

    warp的使用

    AI编程工具比较

    FastApi

    推荐内容

    怎样使用V2Ray代理和SSTap玩如魔兽世界/绝地求生/LOL台服/战地3/黑色沙漠/彩...

    sstap游戏代理教程 从此玩如魔兽世界/绝地求生/LOL台服/战地3/黑色沙漠/彩虹六...

    BT磁力搜索网站汇总和找不到的资源

    什么是磁力链接,您如何使用?

    Z-Library:全球最大的数字图书馆/含打不开的解决方案/镜像

    使用V2Ray的mKCP协议加速游戏

    v2rayN已停止工作

    【车险课堂】什么是无赔款优待系数ncd,你“造”吗?