#!/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 "$@"