#!/bin/bash # 截取java的pid号 java_pid=`netstat -lnpt |grep 'java'|awk '{print $NF'}|awk NR==1 |awk -F '/' '{print $1'}` # 截取$jstat命令的位置 jstat=/usr/local/jdk-1.8/bin/jstat #jstat_check=$(/usr/local/jdk-1.8/bin/jstat -gcutil) # 用jatat命令获取java的内存的各项值 case $1 in S0) /usr/bin/sudo $jstat -gcutil $java_pid |awk 'NR==2 {print $1}' ;; S1) /usr/bin/sudo $jstat -gcutil $java_pid |awk 'NR==2 {print $2}' ;; E) /usr/bin/sudo $jstat -gcutil $java_pid |awk 'NR==2 {print $3}' ;; 0) /usr/bin/sudo $jstat -gcutil $java_pid |awk 'NR==2 {print $4}' ;; M) /usr/bin/sudo $jstat -gcutil $java_pid |awk 'NR==2 {print $5}' ;; CCS) /usr/bin/sudo $jstat -gcutil $java_pid |awk 'NR==2 {print $6}' ;; YGC) /usr/bin/sudo $jstat -gcutil $java_pid |awk 'NR==2 {print $7}' ;; YGCT) /usr/bin/sudo $jstat -gcutil $java_pid |awk 'NR==2 {print $8}' ;; FGC) /usr/bin/sudo $jstat -gcutil $java_pid |awk 'NR==2 {print $9}' ;; FGCT) /usr/bin/sudo $jstat -gcutil $java_pid |awk 'NR==2 {print $10}' ;; GCT) /usr/bin/sudo $jstat -gcutil $java_pid |awk 'NR==2 {print $11}' ;; *) echo "你的键值不对,请输入正确的键值" esac
此脚本只适合单个java。。。如果想监控多个的话,自己修改一下!!我这里用的是netstat -lnpt | grep java。。所以只适合一个java。两个或多个的自己再想办法重新获取java值!