一个简单的脚本,显示JAVA进程的:端口,程序名,进程号,内存使用

Posted yangjinheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个简单的脚本,显示JAVA进程的:端口,程序名,进程号,内存使用相关的知识,希望对你有一定的参考价值。

使用netstat查询端口时候,总是不能看到程序的名字,还必须要再配合PS对进程号取交集,一个两个可以,经常需要看的话就傻逼了,这个脚本就是为了解决这样的痛点,尤其是优化JAVA程序内存的时候。
在一个夜黑风高的夜晚,我飙了很久的AWK代码,终于做到了,经过数次优化,执行速度非常快。
#!/bin/bash
netstat -tunlp 2>/dev/null | awk -v PAGE=`getconf PAGE_SIZE` -F "[/ ]+" $(NF-1)=="java"{
    sub("^0.0.0.0","*",$4)
    printf "%s  %s  %20s  %s  %6s  ",$1,$6~/[0-9]+/?"UNCONN":$6,$4,$(NF-1),$(NF-2)
    system(("R=(`</proc/" ($(NF-2)) "/statm`);printf ‘%5s‘ $[${R[1]}*"PAGE"/1048576]"))
    printf "M  "
    system(("readlink -f /proc/" ($(NF-2)) "/cwd"))
}

过程解析:

显示系统的TCP和UDP套接字:netstat -tunlp:

为AWK的PAGE变量赋值内存页大小:-v PAGE=`getconf PAGE_SIZE`

将0.0.0.0替换为星号:sub("^0.0.0.0","*",$4)

打印进程号,套接字,监听状态:printf "%s %s %20s %s %6s ",$1,$6~/[0-9]+/?"UNCONN":$6,$4,$(NF-1),$(NF-2)
 
调用系统命令进程内存使用:system(("R=(`</proc/" ($(NF-2)) "/statm`);printf ‘%5s‘ $[${R[1]}*"PAGE"/1048576]"))

调用系统命令查询JAVA进程的名字:system(("readlink -f /proc/" ($(NF-2)) "/cwd"))
 
 
 文章写的不错?请扫下面作者的讨饭专用码,鼓励作者继续分享
 
技术分享图片




以上是关于一个简单的脚本,显示JAVA进程的:端口,程序名,进程号,内存使用的主要内容,如果未能解决你的问题,请参考以下文章

linux如何查看开启端口

用shell写一个守护进程脚本

python监控端口脚本

在Java中获取当前进程端口

windows 关闭端口被占用脚本

java 用ServerSocket监听了一个端口,在程序结束的