自动生成程序的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}"
相关推荐
i建模3 小时前
通过命令行使用密钥登录远程SSH主机
运维·ssh
wd5205217 小时前
常用环境部署(二十九)——Centos升级OpenSSH 10.2p1
linux·运维·centos·ssh
深念Y10 小时前
光猫改桥接模式实战:通过Telnet获取超级管理员密码
ssh·路由器·桥接模式·逆向·光猫·telent·管理员密码
徒 花1 天前
ubuntu远程连接ssh及VSCode配置远程ssh连接ubuntu
vscode·ubuntu·ssh
闲猫1 天前
Java ApacheSSHD实现SSH代理
运维·服务器·ssh
zhougl9961 天前
配置SSH免密
网络·ssh·php
鹓于2 天前
手机SSH直连电脑运行iflow终极安全配置
windows·安全·ssh
梦醒过后说珍重2 天前
【踩坑记录】局域网使用 mDNS 免 IP 登录服务器,却被代理 Fake-IP 劫持的排查过程
ssh
IMPYLH2 天前
Linux 的 basename 命令
linux·运维·服务器·ssh·bash
曦云沐2 天前
从零开始:OpenClaw 安全远程访问完全指南(SSH隧道实战版)
安全·ssh·openclaw