测试开发日志——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
}

 

 
posted @ 2020-05-24 14:16  Cyrus-1900  阅读(182)  评论(0)    收藏  举报