如何让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
相关产品推荐
相关产品推荐

