46 lines
1.6 KiB
Bash
46 lines
1.6 KiB
Bash
#!/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 "======================================"
|