linux 查看pid占用的端口_如何通过端口号查进程

linux 查看pid占用的端口_如何通过端口号查进程Linux查看Java进程PID、端口号和内存占用脚本Linux查看Java进程PID、端口号和内存占用脚本背景查询PID查询占用端口查询内存占用百分比脚本使用背景正常情况下,一个jps-ml就可以查看机器上有多少Java进程以及它们的PID,如果还要看端口号,甚至内存占用,就还要配合netstat以及ps等查询,如果直接使用一个命令就能查出所有信息多…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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

背景

正常情况下,一个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 ~/bin/superJps

##>>>>>>>>>>>>>>>>>>>>>>>file input>>>>>>>>>>>>>>>>>>>>>
#!/bin/bash 
# 临时文件路径,保存jps信息
TMP_FILE_PATH=/tmp/superJps.tmp
jps -ml > $TMP_FILE_PATH

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

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

# 逐行读入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
done < $TMP_FILE_PATH

# 展示总的内存占用百分比
echo "PMEM_TOTAL: $SUM_PMEM%"
##>>>>>>>>>>>>>>>>>>>>>>>file input>>>>>>>>>>>>>>>>>>>>>

使用

先给可执行权限,root用户赋最高权限,其他用户赋可读可执行权限:

chmod 755 superJps

可以把路径写到环境变量里,这样就不用每次带路径:

vi /etc/profile

export PATH=$PATH:/root/bin

source /etc/profile

# 使用
[root@dbaasdev01 bin]# superJps
PID     PORT    PMEM    JAR
24337   8761    7.8%    /any/path/a.jar
20851   8190    4.4%    /any/path/b.jar
13651   9010    7.1%    /any/path/c.jar
6565            %       sun.tools.jps.Jps
26118   8081    4.1%    /any/path/d.jar
8631    8091    4.0%    /any/path/e.jar
32375   8088    4.4%    /any/path/f.jar
20986   8082    10.2%   /any/path/g.jar
14205   9000    9.6%    /any/path/h.jar
20909   8084    3.8%    /any/path/i.jar
PMEM_TOTAL: 55.4%
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/172498.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月23日 下午11:46
下一篇 2022年8月23日 下午11:46


相关推荐

  • PHP获取客户端IP地址方式[通俗易懂]

    PHP获取客户端IP地址方式[通俗易懂]一、如果没有使用代理服务器REMOTE_ADDR=客户端IPHTTP_X_FORWARDED_FOR=没数值或不显示$ip=$_SERVER[‘REMOTE_ADDR’];二、使用透明代理REMOTE_ADDR=最后一个代理服务器IPHTTP_X_FORWARDED_FOR=客户端真实IP(经过多个代理服务器时,这个值类似:221.5.252….

    2025年7月21日
    6
  • 使用mxnet实现卷积神经网络LeNet

    1.LeNet模型LeNet是一个早期用来识别手写数字的卷积神经网络,这个名字来源于LeNet论文的第一作者YannLeCun。LeNet展示了通过梯度下降训练卷积神经网络可以达到手写数字识别在当

    2021年12月30日
    63
  • 字王2012·字王回文体系列,共15款,点击浏览·字体样张

    字王2012·字王回文体系列,共15款,点击浏览·字体样张

    2021年8月18日
    65
  • 如何实现自定义类加载器_开发者不可以自定义类加载器

    如何实现自定义类加载器_开发者不可以自定义类加载器为什么要有类加载器类加载的过程初识类加载器类加载机制自定义类加载器为什么要有类加载器我们知道java中所有的二进制文件,最后都是要放在jvm中解释运行的。纯粹的二进制文件,其实并没有什么卵用。jvm在第一次使用或者预加载时,都要将某个类的二进制文件加载进去,这时候不可避免的需要用到一个加载的触手,就是这个类加载器啦。类的加载过程简单来说,一般可分为加载、连接、初始化三个过程。加载,顾名思义

    2025年9月16日
    8
  • linux rsyslogd占用内存高_eventlog错误6008

    linux rsyslogd占用内存高_eventlog错误6008概述使用top命令查看内存占用时,发现rsyslogd内存占用很高。解决修改rsyslogd服务配置文件vim/usr/lib/systemd/system/rsyslog.service在Service配置中添加MemoryAccounting=yes,MemoryMax=80M,MemoryHigh=8M三项来限制服务内存使用率,如下所示[Unit]Description=SystemLo…

    2022年8月15日
    29
  • verilog语言转vhdl语言_vhdl转换为verilog

    verilog语言转vhdl语言_vhdl转换为verilog1.下载后先运行X-HDL-4.2.1-Setup.exe文件,选择安装路径,注意路径中不要有中文。2.运行crack_xhdl_4.2.1.exe文件,选择刚刚你安装XHDL的路径下的\bin文件夹,点击next—finish,出现success代表激活成功教程成功。3.可能会要求你重启电脑,这时候同意重启就好了。4.重启之后运行X-HDL。5.可以选择VHDL转Verilog或Verilog转…

    2026年2月7日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号