155 lines
3.1 KiB
Bash
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 "$@"
|