Linux查看Java进程PID、端口号和内存占用脚本

原文地址【https://blog.csdn.net/CL_YD/article/details/79623297】

背景
正常情况下,一个jps -ml就可以查看机器上有多少Java进程以及它们的PID,如果还要看端口号,甚至内存占用,就还要配合netstat以及ps等查询,如果直接使用一个命令就能查出所有信息多好呀,那就试试吧。

查询PID
Java自带的jps就很好用,不多说。

查询占用端口
使用netstat工具,根据Java进程的PID查询这个PID占用的端口,一定是状态为LISTEN,并且PID/NAME = PID/java的记录。这在一台机器启多个Java Web项目的时候很有用,比如测试环境一台机器上的多个spring-boot项目,没有网关的情况下,经常搞不清到底访问哪个端口。

查询内存占用百分比
感觉机器很卡,free一下发现内存没了,看看哪个java占用的内存偏高,可以使用ps -e -o 'pid,pmem'查询PID内存占用的百分比。

脚本
 

vi ~/myshell/superjps.sh

##脚本内容############################################################

#!/bin/bash
#set -x

echo "*******************************************************"
# 临时文件路径,保存jps信息
TMP_FILE_PATH=/tmp/superJps.tmp
jps -ml > $TMP_FILE_PATH

# java进程占用的内存总百分比
SUM_PMEM=0

# 展示第一行表头
echo -e "PID\tPORT\tPMEM\tJAR"
echo "*******************************************************"

# 逐行读入jps内容
while read LINE
do
        # 首先转换为数组,第一列是PID,第二列是详细描述
        JPS_ARRAY=($LINE)
        # 占用端口
        PORT=`netstat -nlp | awk '{if($6=="LISTEN" && $7=="'"${JPS_ARRAY[0]}/java"'")print $4}' | awk -F ":" '{print $4}'`
        # 占用内存
        PMEM=`ps -e -o 'pid,pmem' | sed s/'^\s*'/''/ | egrep "^${JPS_ARRAY[0]}" | awk '{print $2}'`
        # 输出
        echo -e "${JPS_ARRAY[0]}\t$PORT\t$PMEM%\t${JPS_ARRAY[1]}"
        # 内存百分比求和
        if  [ ! -n "$PMEM" ] ;then
                SUM_PMEM=`echo $SUM_PMEM+0|bc`
        else
                SUM_PMEM=`echo $SUM_PMEM+$PMEM|bc`
        fi
echo "*******************************************************"
done < $TMP_FILE_PATH

# 展示总的内存占用百分比
#echo "PMEM_TOTAL: $SUM_PMEM% \n"
echo "PMEM_TOTAL: $SUM_PMEM%"
echo "*******************************************************"

##打印结果如下##########################################################

*******************************************************
PID     PORT    PMEM    JAR
*******************************************************
11532           %       sun.tools.jps.Jps
*******************************************************
10589   8010
8081    50.9%   org.apache.catalina.startup.Bootstrap
*******************************************************
PMEM_TOTAL: 50.9%
*******************************************************

 

Linux计算器bc安装:

##Ubuntu

apt-get install bc

##Centos

yum -y install bc

你可能感兴趣的:(linux,Java)