You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让shell脚本控制chia_plot循环并支持无中断动态调整运行参数

实现方案
  • 第一步:拆分独立配置文件
    在plotter.sh同级目录新建plotter.conf,把所有需要动态调整的参数单独存放,内容示例:
poolcontactaddress=gjghkjhj
farmerpublickey=gjhgjhgjhgjh
tmp_dir=/mnt/u2-0052/
cache_dir=/mnt/ramdisk/
thread_num=48
bucket_num=128
  • 第二步:修改plotter.sh脚本逻辑
    关闭chia_plot自带的无限循环,新增shell外层循环,每次循环前重新加载配置文件,实现参数动态生效,修改后脚本内容:
#!/bin/bash
# 固定配置(不需要频繁修改的参数可保留在此处)
LOG_PATH=~/chia/logs/
PLOT_BIN=~/chia/chia-plotter/build/chia_plot
CONF_PATH=$(dirname "$0")/plotter.conf

# 外层死循环控制任务调度
while true; do
    # 每次启动新任务前重新加载配置,修改后自动生效
    source "$CONF_PATH"
    
    # 动态生成单次运行标识参数
    farmid=${farmerpublickey: -6}
    timestamp=$(date +'%Y%m%d-%H%M%S')
    runid=$(uuid)
    
    # 调用chia_plot单次运行(将原参数-n -1替换为-n 1,关闭程序自带循环)
    "$PLOT_BIN" \
        -c "$poolcontactaddress" \
        -f "$farmerpublickey" \
        -t "$tmp_dir" \
        -2 "$cache_dir" \
        -n 1 \
        -r "$thread_num" \
        -u "$bucket_num" \
        2>&1 | tee "${LOG_PATH}/plotter-${farmid}-${runid}-${timestamp}.log"
    
    # 可选:两次任务之间添加间隔时间,单位秒,不需要可直接删除
    sleep 10
done
  • 第三步:使用方式
    需要调整运行参数时,直接编辑plotter.conf对应配置项保存即可,当前正在运行的plot任务结束后,下一次任务会自动加载新参数启动,全程不需要停止脚本服务。
注意事项
  • 修改配置仅对下一次新启动的plot任务生效,不会中断当前正在运行的任务
  • 需要停止服务时,直接给脚本进程发送SIGINT(ctrl+c)或kill信号即可,当前任务结束后不会再启动新任务
  • 需要强制中断当前运行的plot任务时,直接kill对应的chia_plot进程即可,脚本会在本次任务结束后自动用最新配置启动新任务

内容的提问来源于stack exchange,提问作者crashintoty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 14:48:00