自动生成程序的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}"
相关推荐
海棠AI实验室1 天前
VS Code Remote-SSH :原理、前置条件、配置套路与踩坑清单
运维·ssh
有想法的py工程师2 天前
PostgreSQL archive_command 场景下的 postgres 免密 SSH 配置与排查实录
数据库·postgresql·ssh
李钢蛋2 天前
使用 SSH 隧道安全连接远程 MongoDB
安全·mongodb·ssh
理智.6292 天前
Windows 本地文件上传到 Linux 服务器的完整实践(scp/ssh),以及常见踩坑总结
linux·服务器·ssh
进击切图仔2 天前
新装 Ubuntu 20.04.6 中安装 ssh.server 功能
linux·ubuntu·ssh
BUTCHER53 天前
GitLab SSH 密钥配置
运维·ssh·gitlab
Honmaple3 天前
OpenClaw 远程访问配置指南:SSH 隧道与免密登录
运维·ssh
视觉AI4 天前
【踩坑实录】Windows ICS 共享网络下,国产化盒子 SSH 连接异常的完整分析
网络·windows·ssh
ZeroNews内网穿透4 天前
关于飞牛fnOS重要安全更新的提醒
运维·服务器·web安全·ssh
m0_738120725 天前
内网横向——记录某三层网络渗透及综合渗透(socks代理隧道搭建,nacos未授权,redis上传Webshell)
网络·安全·web安全·ssh·php