AAlice_zhouupdate
8601f7e4Add on 21 days agoHistory
#!/bin/bash
# archive_plog.sh — 按进程 PID 归档 plog(全轮转段合并,不依赖 ls -t)
#
# 用法: bash scripts/archive_plog.sh <PID> <output_file> [plog_dir]
#   PID        — fuzz 进程 PID
#   output     — 归档目标文件(如 output/{api}/fuzz_logs/{api}_fuzz_plog.log)
#   plog_dir   — plog 目录(默认 ${ASCEND_LOG_PATH:-/root/ascend/log/debug/plog})
#
# 说明:
#   plog 文件命名规则: plog-{PID}_{timestamp}.log(同一进程可能有多个轮转段)
#   本脚本 find plog-{PID}_*.log 全部命中后按文件名排序合并(时间序),cat 到目标文件
#   替代旧的 `cp ${ASCEND_LOG_PATH}/plog-*.log`(旧方式会误收其他进程的 plog)

PID="$1"
OUTPUT="$2"
PLOG_DIR="${3:-${ASCEND_LOG_PATH:-/root/ascend/log/debug/plog}}"

if [ -z "$PID" ] || [ -z "$OUTPUT" ]; then
    echo "Usage: $0 <PID> <output_file> [plog_dir]" >&2
    exit 1
fi

mkdir -p "$(dirname "$OUTPUT")"

# 按文件名排序(plog-{PID}_{timestamp}.log 天然按时间序)合并全部轮转段
FILES=$(find "${PLOG_DIR}" -name "plog-${PID}_*.log" -type f 2>/dev/null | sort)
if [ -z "$FILES" ]; then
    echo "[ARCHIVE_PLOG] WARN: no plog-${PID}_*.log found in ${PLOG_DIR}" >&2
    touch "$OUTPUT"
    exit 0
fi

COUNT=$(echo "$FILES" | wc -l)
echo "$FILES" | xargs cat > "$OUTPUT" 2>/dev/null
echo "[ARCHIVE_PLOG] PID=$PID segments=$COUNT -> $OUTPUT ($(wc -l < "$OUTPUT") lines)"