测试开发日志——Linux shell(2)Linux性能统计
ps
ps aux 查看性能 ps -ef 查看线程
top
top -n 1 -b top -d 1 -n 3 -b | grep -i aliyundun --line-buffered | awk '{print $9}'
netstat
netstat -ntlp
实战内容
- 文件检索
- 在特定目录下找到包含特定debug的数据或者代码
- 网络统计
- 压测时统计当前机器的连接数
- 查看当前开放的端口和进程
- 性能统计
- 统计某个进程的cpu和mem的增长情况
- 任务处理
- 使用简易的工具对第三方服务做加压并统计性能
perf_get
统计某个进程的cpu和mem的增长情况
1 #不区分大小写 2 #perf_get aliyundun 3 #perf_get 12780 4 perf_get(){ 5 #todo 6 } 7 8 perf_get yundun 9 cpu mem 10 1 2 11 3 4 12 13 avg: 2 3
答案
1 #perf_get yundun$ 2 #perf_get 12789 3 perf_get() { 4 #使用变量替换位置参数 5 local proc="$1" 6 local timeout="$2" 7 8 #基本使用给予基本检查 9 [ -z "$proc" ] && { echo please give a proc name or pid; return 1; } 10 [ -z "$timeout" ] && timeout=10 11 12 #top的批处理输出 13 top -b -d 1 -n $timeout | 14 #范围限定,为了精准处理 15 grep '^[ 0-9][1-9]' | 16 #提取精准数据 17 awk '{print $1,$9,$10,$12}' | 18 #取出感兴趣数据,同时读一行就给后面的管道进程,方便实时显示 19 grep --line-buffered -i "$proc" | 20 #分组统计并打印,使用tab作为OFS进行输出,fflush()可以实时输出给后面的进程 21 awk ' 22 BEGIN{OFS="\t";print "CPU","MEM"} 23 {cpu+=$2; mem+=$3;print $1,$2,$3,$4;} 24 END{print "";print "avg: ",cpu/NR,mem/NR}' 25 } 26 27 [root@shell.testing-studio.com ~]$ perf_get yundun$ 5 28 CPU MEM 29 7957 0.0 0.7 AliYunDun 30 7957 2.9 0.7 AliYunDun 31 7957 3.9 0.7 AliYunDun 32 7957 3.9 0.7 AliYunDun 33 7957 3.9 0.7 AliYunDun 34 35 avg: 2.92 0.7
tcp_connections
查下当前机器有多少到22端口的tcp连接
# 访问当前机器22端口的tcp连接数 function tcp_connections(){ netstat -tn 2>/dev/null | grep "^tcp" | grep -v '127.0.0.1' | awk '$4~/:22$/ {print $5}' | wc -l } # 访问当前机器22端口的IP数 function ip_tcp_connections(){ netstat -tn 2>/dev/null | grep "^tcp" | grep -v '127.0.0.1' | awk '$4~/:22$/ {print $5}' | awk -F: '{print $1}' | sort | uniq -c | wc -l }

浙公网安备 33010602011771号