自动生成程序的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}"
相关推荐
Jurio.8 小时前
Codex App SSH 远程开发教程:本地连接远程服务器项目
服务器·ssh·远程工作·codex
REDcker21 小时前
GitHub SSH 连接失败排障实录
运维·ssh·github
洪恒远2 天前
Windows 配置 Gerrit SSH Key
运维·ssh
Web3探索者12 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
开发者联盟league19 天前
安装pnpm
ssh
2601_9618752419 天前
决战申论100题2026|最新|范文
linux·容器·centos·debian·ssh·fabric·vagrant
小小小花儿19 天前
SSH密钥配置(免密连接远程服务器)
服务器·ssh
m0_5261194020 天前
ssh key生成,gitee配置ssh
运维·gitee·ssh
qq_3384323720 天前
VSCode Remote-SSH 远程 Windows Server 卡死的排查与解决
windows·vscode·ssh
着迷不白20 天前
十、网络客户端工具curl, wget, ssh, scp, sftp, rsync
运维·网络·ssh