ansible-devops/scripts/dcgm_diag_bg_log.sh

46 lines
1.6 KiB
Bash
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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