自动生成程序的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}"
相关推荐
程序员初一1 天前
8080 打不开的四层定位:监听地址、ufw、DOCKER 链、安全组
linux·ssh
程序开发阿元1 天前
swappiness 60 和 10 差在哪:一台 1C1G 的三轮对比
linux·ssh
程序开发阿元2 天前
一台 20G 的 VPS 被日志吃掉一半:我按这个顺序查了二十分钟
linux·ssh
skywalk81632 天前
不用 SSH、不装数据库:我用 1 个 Python 脚本 + Git,把 15 个 AI Agent 串成了一条流水线
数据库·人工智能·python·ssh·集群
FungLeo2 天前
成为全栈·基础补充·Linux 服务器入门
linux·运维·服务器·ssh·部署·成为全栈
十碗饭吃不饱2 天前
SSH 密钥认证详解:原理、实操、参数、排错与加固
运维·ssh
debugdynamo3 天前
Netcatty:把 SSH 客户端做回工作台
运维·其他·ssh
时空无限3 天前
ssh 直接免密输入 sudo 密码
运维·ssh
如若1235 天前
Windows SSH + Headscale/Tailscale 组网及免密登录完整配置教程
运维·windows·ubuntu·ssh·内网穿透
lwx9148525 天前
Docker-安装SSH服务
docker·容器·ssh