码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-01-14 22:48:11      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:strong   bubuko   adl   执行   .com   打印   height   调用   套接字   

使用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进程的:端口,程序名,进程号,内存使用

标签:strong   bubuko   adl   执行   .com   打印   height   调用   套接字   

原文地址:https://www.cnblogs.com/yangjinheng/p/8284470.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!