自动生成程序的heap文件

写了一个可以自动生成heap文件的脚本,heap文件名由程序占用的内存和当前时间命名。

bash 复制代码
#!/bin/bash

# 用法示例: ./getheap.sh
# 文件名格式: xx_{PSS_MB}M_{HHMMSS}.heap

set -euo pipefail

PROCESS_NDMLOCMAP="process"
HEAP_DIR="./heap"

mkdir -p "${HEAP_DIR}"

# 获取进程PID
pid=$(pgrep -f "${PROCESS_NDMLOCMAP}" | head -n1)
if [[ -z "${pid}" ]]; then
    echo "未找到运行中的 ${PROCESS_NDMLOCMAP} 进程"
    exit 1
fi

# 获取内存占用(PSS,单位MB)
# 读取/proc/$pid/smaps,统计所有Pss: 行的和
pss_kb=$(awk '/^Pss:/ {sum += $2} END {print sum}' /proc/"${pid}"/smaps)
if [[ -z "${pss_kb}" ]]; then
    echo "无法获取进程PSS内存"
    exit 1
fi
pss_mb=$(( (pss_kb + 1023) / 1024 ))

# 获取当前时间(时分秒)
datetime=$(date +%H%M%S)

# 组装文件名
heapfile="${HEAP_DIR}/xx_${pss_mb}M_${datetime}.heap"

# 实际抓取 heap 的命令(请根据实际情况修改)
# 例如通过 telnet 到 8880 端口抓取,结果重定向到目标文件
telnet 127.0.0.1 8880 > "${heapfile}"

echo "Heap profile 已保存:${heapfile}"
相关推荐
lingran__21 小时前
Git 完全指南(三):远程仓库与标签管理
开发语言·git·gitee·ssh·团队协作·远程仓库·分布式版本控制
Tassel_YUE1 天前
非 ansible 主机批量执行命令方法:psssh 和 pscp(随手记)
linux·网络·ssh·scp·ansible
JZZC22 天前
1.1 基础的SSH配置
计算机网络·ssh
深念Y3 天前
Windows 11 工具链部署与 SSH 踩坑笔记
windows·笔记·ssh
mooooooooooye4 天前
2026 年跨平台 SSH 客户端怎么选?Xterminal、Termius、MobaXterm 谁更合适
服务器·网络·ssh
小王C语言5 天前
Windows 无法使用 ssh 连接虚拟机(ubuntu),网络没问题的情况下
运维·ssh
mooooooooooye6 天前
SSH 工具越用越乱,Xterminal 先清掉这三类失效连接
运维·ssh·github
梓沂6 天前
SSH 公钥认证配置指南:从生成密钥到配置 SFTP 服务器
ssh
lswzw7 天前
我开源了 ssh-mcp:让支持 MCP 的 AI 客户端通过 SSH 查服务器、查数据库、读文件和部署
人工智能·开源·ssh
北冥you鱼7 天前
HTTPS 推送失败?改用 SSH 一键搞定
网络协议·https·ssh