JzLog_config.sh 1.0 KB
#!/bin/sh
# 开机日志归档脚本
# 执行时机:必须在 USB Gadget 启动之前

LOG_SYS="/root/JZLOG"
LOG_SDCARD="/root/sdcard/JZLOG"

# 1. 创建目录
mkdir -p "$LOG_SYS" "$LOG_SDCARD"

# 2. 同步 thelast 文件
if [ -f "$LOG_SDCARD/thelast" ]; then
    cp -f "$LOG_SYS/thelast" "$LOG_SDCARD/thelast" 
else
    rm -f "$LOG_SYS/thelast"
fi

# 3. 移动所有 .log 文件
# 使用 find 避免 "argument list too long"
find "$LOG_SYS" -maxdepth 1 -type f -name "*.log" -print0 | while IFS= read -r -d '' file; do
    mv "$file" "$LOG_SDCARD/"
done

# 4. 数量控制:超过20份则删除最早的(按文件名中的序号)
cd "$LOG_SDCARD" || exit 1
files=( *.log )
count=${#files[@]}
if [ $count -gt 20 ]; then
    # 提取序号并排序(假设文件名格式固定为 _数字_...)
    sorted=$(printf '%s\n' "${files[@]}" | sed -n 's/^_\([0-9]*\)_.*/\1 \0/p' | sort -n | cut -d' ' -f2)
    if [ -n "$sorted" ]; then
        delete=$((count - 20))
        echo "$sorted" | head -n "$delete" | xargs rm -f
    else
        # 如果无法解析序号,退而按修改时间删除最老的
        ls -t *.log | tail -n +21 | xargs rm -f
    fi
fi