一个简单的脚本,显示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"))

 文章写的不错?请扫下面作者的讨饭专用码,鼓励作者继续分享

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

时间: 2024-08-30 11:13:21

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

【sehll学习】linux运维一个简单shell脚本监控系统内存

学习shell脚本入门后,慢慢要尝试编写一些脚本练练手,在这先简单的学习写个系统内存的监控. 1.首先先要确定一下截取一下需要关注的内存使用值,可使用free 命令来操作 free -m 显示 一般在监控内存是我们都是截取 第三行(-/+ buffers/cache)的值.确定后可以使用管道线和grep命令来获取这个的值. free -m | grep - | awk  '{print $4}' 获取到他的值为  858 当中 grep -  就是匹配一下要选取的内容,不太熟悉的可以学习一下gr

一个简单 的Shell 显示程序

#!/bin/bash clear declare FirstName Greeting   Greeting="Hello ," echo "" echo "Enter Your First Name:" read FirstName echo "$Greeting $FirstName" 首先   vim  Print  回车 然后   i   进入插入状态 编辑以上代码,Esc 键回车 输入   chmod  711 P

Oracle 9.2.0.4的一个简单安装脚本(含安装前补丁p3006854)

#! /bin/bashecho "#########oracle9R204 的一个简单的安装脚本 ##############################"## 为系统添加oracle的用户和用户组#groupadd dbagroupadd oinstalluseradd -c "Oracle software owner" -g oinstall -G dba oraclepasswd oracle # 创建oracle 的安装目录 mkdir /oracl

第一次写博客,一个简单的实例:java读写txt文件,希望这是一个好的开始。

作为一名初级开发人员,每天都是在网络上寻找别人的代码,然后修修改改应用到项目中,不知不觉间,自己真的成为代码的搬运工了. 编程的乐趣是在浩瀚的知识海洋中找到自己想要的代码,共享信息,方便自己,也方便别人. 下面的代码是一个简单的java代码读取txt文件的实例.虽然简单,但是可以为零基础的新手一个入门例子. package javatest; import java.io.BufferedReader;import java.io.File;import java.io.FileInputStr

一个简单限速器的java实现

在日常开发过程中,经常遇到对资源使用频度的限制,例如:某个接口只允许每秒调用300次,或者某个资源对象只允许每秒使用300等等,下面是一个简单的限速器的java实现,它可以实现对一个资源在若干时间(毫秒内)只允许多少次访问,具体实现代码如下: package test_tmp; import java.util.concurrent.ConcurrentLinkedDeque; import java.util.concurrent.Semaphore; public class SpeedLi

记录工作用到的一个简单js脚本

测试极光发送通知接口及客户端处理情况,需在极光后台增加通知数据.由于需要多个输入框输入数据,浏览器关闭后又需重新输入数据,故作此简单js脚本,在浏览器开发者模式下执行,便自动向浏览器输入框输入数据. document.getElementsByTagName("textarea")[0].value="专家说文章测试切入横幅跳转测试切入横幅跳转" document.getElementsByClassName("input-global-blue-shad

一个简单限速器的java实现[2]

在 http://blog.csdn.net/houjixin/article/details/45222081 或者 http://houjixin.blog.163.com/blog/static/3562841020153233201796/ 中实现的限速器,需要内部维持一个容器来记录每次访问的时间,在每次新请求资源时通过计算容器中首尾两个时间的差值以及容器中的访问次数来确定是否超速,其实这种实现方法有两个缺点: (1)只比较了平均速度,没有比较瞬时速度,假如限速器限制每秒钟最多访问100

python学习之路-第三天-一个简单的脚本

现在有一个需求:把某个目录下的文件备份到指定到另外一个目录下,而且压缩后文件为zip文件 # -*- coding:utf-8 -*- #! /usr/bin/python # Filename:backup_v1.py import os import time source = [r'H:\StudyLib\lib'] # 源文件目录,是个列表,可以放入多个目录 target_dir = 'I:\\backpacks\\' # 目标目录 target = target_dir + time.

测试网站页面网速的一个简单Python脚本

[[email protected] mnt]# cat pycurl.py #!/usr/bin/python# coding: UTF-8import StringIO,pycurl,sys,os,time class idctest:    def __init__(self):          self.contents = ''    def body_callback(self,buf):          self.contents = self.contents + buf d