Linux命令进阶-cpu监控内存监控文件IO网络IO性能分析

Linux命令进阶-cpu监控内存监控文件IO网络IO性能分析

  • 前言
  • 1 linux基础命令
    • 1.1 grep
    • 1.2 ls
    • 1.3 find
    • 1.4 ulimit
    • 1.5 curl
    • 1.6 scp
    • 1.7 dos2unix和unix2dos
    • 1.8 sed
    • 1.9 awk
  • 2 cpu性能监测
    • 2.1 uptime
    • 2.2 stress
    • 2.3 mpstat
    • 2.4 ps
    • 2.5 top
    • 2.6 pidstat
  • 3 内存监测
    • 3.1 free
  • 4 文件IO
    • 4.1 iostat
    • 4.2 df
    • 4.3 du
  • 5 网络IO查看
    • 5.1 ifconfig
    • 5.2 netstat
    • 5.3 ping
    • 5.4 nslookup
    • 5.5 tcpdump
    • 5.6 nc

前言

作为一名linux工程师,我们需要时刻关注设备的cpu性能,内存和网络io等指标,以便保持系统正常运转,同时也是为了检查程序的性能。
这里奉上大神的博客想进一步深造的可以去观摩一下:http://www.brendangregg.com

1 linux基础命令

#这里不展开讲,只是列出一些常用的命令,想要进一步了解每一个参数,可以利用help查看参数具体使用规则,也可以上网单独查看某一条命令详解。

1.1 grep

grep 作为linux内容查找利器,当之无愧霸榜,用的也是最多的命令。

#其中i:忽略大小写;r:递归查找目录;n:打印行号;v:反向查找;c:显示匹配的行数;等等
grep -irn ./test

1.2 ls

查看目录下文件情况,对于修改时间,权限查看也是非常常用的命令

#l:显示条目;h:显示GB,M,K等自适应;a:显示所有
ls -lah ./test

1.3 find

find查找文件利器,通过文件名查找文件的所在位置,文件名查找支持模糊匹配

find [指定查找目录] [查找规则] [查找完后执行的action]
#忽略大小写查询test.txt文件
find ./test -iname test.txt

1.4 ulimit

查看用户资源,常用与查看系统当前支持的文件句柄数,进程数等等;

#查看所有用:-a
ulimit -a
#临时修改先查看所有带的命令参数;
#如修改:文件句柄数:-n
ulimit -n 4096

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 7380
max locked memory       (kbytes, -l) 16384
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

1.5 curl

curl 是常用的命令行工具,用来请求 Web 服务器。

#在http访问上用的比较多
curl -v “http://www.baidu.com”

1.6 scp

远程拷贝神器,告别u盘;

#用户名@ip:路径文件 目标目录
scp [email protected]:/home/disk/test/libcrypto.a ./test

1.7 dos2unix和unix2dos

用于转换Windows和UNIX的换行符,通常在Windows系统h开发的脚本和配置,UNIX系统下都需要转
换。

#转换整个目录
find . -type f -exec dos2unix {} ;

1.8 sed

详细参考:github-sed
1 替换
-n 表明忽略执行过程的输出,只输出我们的结果即可。 -i 。使用此参数后,所有改动将在原文件上执行。你的输出将覆盖原文件。非常危险,一定要注意。

#sed ‘s/原字符串/新字符串/g’ 文件,替换
sed -n ‘s/sudo/test_sudo/g’ README.md

2 操作
p 对匹配内容进行打印。d 对匹配内容进行删除。这个时候就要去掉-n
参数了,想想为什么。w 将匹配内容写入到其他地方。

sed -n ‘2,5 p’ test.cpp
sed ‘2,5 d’ test.cpp
sed -n ‘2,5 w output.txt’ test.cpp

1.9 awk

详细参考:github-awk
awk [可选的命令行选项] ‘BEGIN{命令 } pattern{ 命令 } END{ 命令 }’ 文件名

#ip拆分
echo ‘192.168.1.1’ | awk -F “.” ‘{print $2}’
168

注意点:

  • 1、awk的主程序部分使用单引号‘包围,而不能是双引号
  • 2、awk的列开始的index是0,而不是1

2 cpu性能监测

2.1 uptime

查看机器的启动时间、登录用户、平均负载等情况,通常用于在线上应急或者技术攻关中,确定操作系
统的重启时间。

查看虚拟机运行的状态
17:24:31 up 13 days, 3:00, 2 users, load average: 0.05, 0.01, 0.00
当前时间: 17:24:31
系统已经运行的时间:13 days, 3:00
前在线用户:2 个用户,是总连接数量,不是不同用户数量(开一个终端连接就算一个用户)。
系统平均负载:0.05, 0.01, 0.00,为最近1分钟、5分钟、15分钟的系统负载情况。

注意点:

负载说明(现针对单核情况,不是单核时则乘以核数):

  • load<1:没有等待
  • load==1:系统已无额外的资源跑更多的进程了
  • load>1:进程都堵着等待资源

查看cpu核数:

grep ‘model name’ /proc/cpuinfo | wc -l

2.2 stress

压测cpu工具stress :
stress ,一个 Linux 系统压力测试工具,这里我们用作异常进程模拟平均负载升高的场景。

apt install stress
#模拟一个cpu使用率100%运行600s
stress --cpu 1 --timeout 600

2.3 mpstat

cpu性能分析工具mpstat:
mpstat 是一个常用的多核 CPU 性能分析工具,用来实时查看每个 CPU 的性能指标,以及所有 CPU 的平均指标。
mpstat [-P {cpu|ALL}] [internal [count]]

apt install sysstat
#每5s打印一次cpu列表使用情况
mpstat -P ALL 5

2.4 ps

进程查看

#显示所有的线程
#查看进程是否启动
sudo ps -ef |grep “nginx” |grep -v grep

2.5 top

top命令用于查看活动进程的CPU和内存信息,能够实时显示系统中各个进程的资源占用情况,可以按照
CPU、内存的使用情况和执行时间对进程进行排序。
Linux命令进阶-cpu监控内存监控文件IO网络IO性能分析_第1张图片

2.6 pidstat

pidstat用于监控全部或指定的进程占用系统资源的情况,包括CPU、内存、磁盘I/O、程切换、线程数等
数据。

u:显示cpu相关的性能指标;r:输出内存的使用信息;d:输出磁盘I/O的使用信息
pidstat -urd -p 进程号
#每5秒打印一次上下文切换
pidstat -w 5
注意:
一个是 cswch ,表示每秒自愿上下文切换(voluntary
context switches)的次数,另一个则是 nvcswch ,表示每秒非自愿上下文切换(non voluntary
context switches)的次数。

  • 所谓自愿上下文切换,是指进程无法获取所需资源,导致的上下文切换。比如说, I/O、内存等系 统资源不足时,就会发生自愿上下文切换。
  • 而非自愿上下文切换,则是指进程由于时间片已到等原因,被系统强制调度,进而发生的上下文切 换。比如说,大量进程都在争抢 CPU
    时,就容易发生非自愿上下文切换。

3 内存监测

3.1 free

free各个字段的含义:

  • total 列显示系统总的可用物理内存和交换空间大小。
  • used 列显示已经被使用的物理内存和交换空间。
  • free 列显示还有多少物理内存和交换空间可用使用。
  • shared 列显示被共享使用的物理内存大小。
  • buffers 是对原始磁盘块的临时存储,也就是用来缓存磁盘的数据。
  • cached 是从磁盘读取文件的页缓存,也就是用来缓存从文件读取的数据。
free -h

在这里插入图片描述

4 文件IO

4.1 iostat

显示所有cpu的平均统计数据;这里需要关注一个参数%iowait:等待磁盘io所消耗的cpu比例
Linux命令进阶-cpu监控内存监控文件IO网络IO性能分析_第2张图片

4.2 df

查看文件系统的硬盘挂载点和空间使用情况。

df -h

Linux命令进阶-cpu监控内存监控文件IO网络IO性能分析_第3张图片

4.3 du

显示目录和目录下子目录和文件占用磁盘空间的大小。

#显示当前目录下一级目录falsh占用情况
du -lh --max-depth=1
Linux命令进阶-cpu监控内存监控文件IO网络IO性能分析_第4张图片

5 网络IO查看

5.1 ifconfig

查看网络状态,包括ip,mac地址;RUNNING表示当前网络正常工作;MTU数据大小;相关丢包错误等信息,对于网络基本信息基本描述。
Linux命令进阶-cpu监控内存监控文件IO网络IO性能分析_第5张图片

5.2 netstat

查看网络套接字连接情况。

#-l只显示监听套接字;n表示显示数字地址和端口;p显示进程信息-t 表示只显示 TCP 套接字-u只显示udp
netstat -nlp
在这里插入图片描述
#查看协议栈信息
netstat -s
Linux命令进阶-cpu监控内存监控文件IO网络IO性能分析_第6张图片
#检查进程开启的端口
netstat -nap | grep 进程号
在这里插入图片描述
#检查端口占用
netstat -nap | grep 端口号
在这里插入图片描述

5.3 ping

连通性检查

5.4 nslookup

检测网络中DNS服务器能否正确解析域名的工具命令

nslookup baidu.com
Linux命令进阶-cpu监控内存监控文件IO网络IO性能分析_第7张图片

5.5 tcpdump

抓包利器

5.6 nc

检查网络连通性,有时候为了检查端口是否被防火墙拦截,采用这种方式检查。

#客户机A,监听8888端口
nc -l 8888
#客户机B,连接端口8888
nc -vw 2 192.168.88.44 8888
在这里插入图片描述

你可能感兴趣的:(Linux网络编程,linux,网络,运维,cpu)