#!/bin/bash
set -euo pipefail

# 定义日志文件路径
LOG_FILE="/opt/check/dcgm-logs.txt"
# 定义日志目录（从日志文件路径中提取）
LOG_DIR=$(dirname "$LOG_FILE")


# 检查是否已有 dcgmi diag 进程在运行
if pgrep -f 'dcgmi diag' > /dev/null; then
    echo "错误：已有 dcgmi diag 进程正在运行，无法重复执行。" >&2
    echo "提示：可通过 'ps -ef | grep dcgmi diag' 查看进程详情，或使用 'pkill -f dcgmi diag' 终止。" >&2
    exit 1
fi


# 检查并创建日志目录（若不存在）
if [ ! -d "$LOG_DIR" ]; then
    echo "日志目录 $LOG_DIR 不存在，正在创建..."
    mkdir -p "$LOG_DIR"  # -p 确保父目录存在，避免多级目录创建失败
    echo "日志目录 $LOG_DIR 创建成功"
fi


# 执行 dcgmi 诊断命令，后台运行并将所有输出（标准输出+错误）重定向到日志文件
echo "正在启动 dcgmi diag -r 4 后台任务，结果将保存到 $LOG_FILE..." 
echo "#------------$(date):开始压测------------------#">>$LOG_FILE
dcgmi diag -r 4 >> "$LOG_FILE" 2>&1 &
echo "#------------$(date):压测结束------------------#">>$LOG_FILE

# 获取后台进程的 PID（方便后续查看/管理）
DCGM_PID=$!


# 输出任务信息
echo "======================================"
echo "任务已后台启动"
echo "进程 ID (PID): $DCGM_PID"
echo "日志文件路径: $LOG_FILE"
echo "--------------------------------------"
echo "查看任务状态：ps -p $DCGM_PID"
echo "查看实时日志：tail -f $LOG_FILE"
echo "终止任务：kill $DCGM_PID"
echo "======================================"
