Files
2026-01-04 09:07:25 +08:00

155 lines
3.1 KiB
Bash

#!/bin/bash
# 批量图片分析管理脚本 - 极简版
BASE_DIR="$HOME/bin/p_anlz"
BATCH_SCRIPT="$BASE_DIR/scripts/batch_run.sh"
LOG_DIR="$BASE_DIR/logs"
MAIN_LOG="$LOG_DIR/batch_run.log"
# 显示帮助
show_help() {
cat << EOF
批量图片分析管理工具
用法: $0 <命令>
命令:
start 后台启动任务
stop 停止任务
status 查看运行状态
log 查看实时日志
help 显示帮助
示例:
$0 start # 启动任务
$0 log # 查看日志
$0 status # 查看状态
修改参数:
API_TYPE=openai $0 start
MAX_WORKERS=3 $0 start
TIMEOUT=120 $0 start
EOF
}
# 启动任务
start_task() {
if pgrep -f "batch_run.sh" > /dev/null; then
echo "任务已在运行中"
exit 1
fi
echo "启动批量分析任务..."
# 导出环境变量
export API_TYPE="${API_TYPE:-dify}"
export MAX_WORKERS="${MAX_WORKERS:-1}"
export TIMEOUT="${TIMEOUT:-90}"
# 后台运行
nohup bash "$BATCH_SCRIPT" > /dev/null 2>&1 &
sleep 2
if pgrep -f "batch_run.sh" > /dev/null; then
echo "✓ 任务已启动"
echo ""
echo "查看日志: $0 log"
echo "查看状态: $0 status"
else
echo "✗ 启动失败"
exit 1
fi
}
# 停止任务
stop_task() {
if ! pgrep -f "batch_run.sh" > /dev/null; then
echo "任务未运行"
exit 0
fi
echo "停止任务..."
pkill -f "batch_run.sh"
pkill -f "image_batch_recognizer.py"
sleep 1
if ! pgrep -f "batch_run.sh" > /dev/null; then
echo "✓ 任务已停止"
else
echo "✗ 停止失败,尝试强制终止..."
pkill -9 -f "batch_run.sh"
pkill -9 -f "image_batch_recognizer.py"
fi
}
# 查看状态
show_status() {
echo "任务状态:"
echo ""
if pgrep -f "batch_run.sh" > /dev/null; then
echo "✓ 运行中"
echo ""
echo "进程信息:"
ps aux | grep -E "batch_run.sh|image_batch_recognizer.py" | grep -v grep
echo ""
# 显示当前进度
if [ -f "$MAIN_LOG" ]; then
echo "最新日志:"
tail -10 "$MAIN_LOG"
fi
else
echo "○ 未运行"
if [ -f "$MAIN_LOG" ]; then
echo ""
echo "上次运行结果:"
tail -15 "$MAIN_LOG" | grep -A 10 "批量分析完成"
fi
fi
}
# 查看日志
show_log() {
if [ ! -f "$MAIN_LOG" ]; then
echo "日志文件不存在: $MAIN_LOG"
exit 1
fi
echo "实时查看日志 (Ctrl+C 退出):"
echo ""
tail -f "$MAIN_LOG"
}
# 主函数
main() {
case "${1:-help}" in
start)
start_task
;;
stop)
stop_task
;;
status)
show_status
;;
log)
show_log
;;
help|--help|-h)
show_help
;;
*)
echo "未知命令: $1"
echo ""
show_help
exit 1
;;
esac
}
main "$@"