shell脚本--linux监控小工具

echo "* 1.链接状态分析"
echo "* 2.进程打开句柄数分析"
echo "* 3.系统打开句柄数最多的进程分析"
echo "* 4.显示系统ipc"
echo "请输入:"
read num
clear
case "$num" in
	1)
		echo "请输入ip地址:"
		read myip
   		echo "要分析的ip地址是:$myip"
   		netstat -ant | awk '/'$myip'/ {print $0; ++y[$NF]} END {printf "---------------------------------\n";for(w in y) printf "%-12s %4d\n", w, y[w]}'
   	;;
   	2)
   		echo "请输入进程PID:"
   		read pid
   		ls /proc/$pid/fd | wc -l
   	;;
   	3)
   		echo "PID  CMD"
   		lsof -n | awk '{print $2}' | sort | uniq -c | sort -nr | sed -n 1,5p > temp
   		awk '{print $2}' temp > temps
   		for i in `cat temps`
   		do
  			cmd=`ps -p $i | awk '$1 ~ /'$i'/ {print $NF}'`
  			echo "$i $cmd"
   		done 
 	;;
 	4)
 		ipcs
 	;;
esac

其中有一些语法的注意点,
1、

netstat -ant | awk '/'$myip'/ {print $0; ++y[$NF]} END {printf "---------------------------------\n";for(w in y) printf "%-12s %4d\n", w, y[w]}'

awk查找的时候如果引用变量,需要‘’,加单引号;
$0代表整行;
NF代表一行字段数目,$NF就是最后一个字段;
awk中 BEGIN代表所有行操作之前做的事,END代表所有行操作结束后做的事
2、
显示进程打开的句柄数时,有两种方法

ls /proc/pid/fd
lsof -p pid

因为lsof会有重复计算的原因,所以显示的数目总是比ls的方式要多,这里参考文章句柄查找优化

未完待续~~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值