如何在终端以美观表格展示GPU ID、PID与用户名映射关系
解决方案
Bash 终端命令
直接在终端执行以下命令,即可输出包含USER、GPU、PID、进程名的整洁关联表格:
echo "USER GPU PID PROCESS_NAME" && nvidia-smi --query-compute-apps=gpu_index,pid,process_name --format=csv,noheader,nounits | awk -F ', ' '{cmd="ps -o user= -p "$2; cmd | getline user; close(cmd); printf "%-12s %-6s %-10s %s\n", user, $1, $2, $3}' | column -t
命令说明
nvidia-smi --query-compute-apps:提取GPU索引、进程PID、进程名的结构化数据awk:调用ps命令查询每个PID对应的用户名,并整理输出格式column -t:自动对齐表格列,保证输出整洁
Python 单行命令
无需额外安装依赖,直接执行以下Python单行命令即可实现相同效果:
python3 -c "import subprocess, csv; print('{:<12} {:<6} {:<10} {:<}'.format('USER','GPU','PID','PROCESS')); reader = csv.reader(subprocess.check_output(['nvidia-smi','--query-compute-apps=gpu_index,pid,process_name','--format=csv,noheader,nounits'], text=True).splitlines(), delimiter=','); for row in reader: pid = row[1].strip(); user = subprocess.check_output(['ps','-o','user=','-p',pid], text=True).strip(); print('{:<12} {:<6} {:<10} {:<}'.format(user, row[0].strip(), pid, row[2].strip()))"
命令说明
- 利用
subprocess调用系统命令获取GPU和进程信息 csv.reader解析nvidia-smi的结构化输出- 格式化字符串实现表格列对齐,输出关联后的完整信息
内容的提问来源于stack exchange,提问作者Charlie Parker
相关产品推荐
相关产品推荐

