Linux 系统分析命令

1. uptime 命令

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

从上面的输出可以看到如下信息 当前时间:

    • 17:51:57 系统已经运行的时间:3天1小时50分钟。
    • 系统平均负载:0.11 , 0.07, 0.05,为最近1分钟、5分钟、15分钟的系统负载情况。

那么如何理解load对应的数值那?假设当前平均负载为 2 时:

    • 在只有 2 个 CPU 的系统上,意味着所有的 CPU 都刚好被完全占用。
    • 在 4 个 CPU 的系统上,则表示 CPU 有 50% 的空闲。
    • 而在只有 1 个 CPU 的系统中, 则意味着有一半的进程禁止不到资源。

补充:

查看 CPU 信息:cat /proc/cpuinfo

查看 CPU 个数:cat /proc/cpuinfo|grep 'model name' | wc -l

 2. top 命令

        top命令用于查看活动进程的CPU和内存信息,能够实时显示系统中各个进程的资源占用情况,可以按照 CPU、内存的使用情况和执行时间对进程进行排序。

        在 top 中,按下 Shift + P 可以按照 CPU 使用率(%CPU)对进程进行排序。

        在 top 中,按下 Shift + M 可以按照内存使用率(%MEM)对进程进行排序。

[root@master zhao]# top
top - 20:39:11 up  2:08,  2 users,  load average: 0.01, 0.02, 0.05
Tasks: 187 total,   1 running, 186 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.1 sy,  0.0 ni, 99.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  4025944 total,  3223056 free,   373356 used,   429532 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  3391552 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                          
     9 root      20   0       0      0      0 S   0.3  0.0   0:02.86 rcu_sched                                                        
  1646 root      20   0  156948   5868   4400 S   0.3  0.1   0:10.52 sshd                                                             
 12202 root      20   0  162108   2336   1580 R   0.3  0.1   0:00.11 top                                                              
     1 root      20   0  193720   6816   4180 S   0.0  0.2   0:05.65 systemd                                                          
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.04 kthreadd                                                         
     4 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                                                     
     6 root      20   0       0      0      0 S   0.0  0.0   0:00.11 ksoftirqd/0                                                      
     7 root      rt   0       0      0      0 S   0.0  0.0   0:00.18 migration/0                                                      
     8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh                                                           
    10 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 lru-add-drain                                                    
    11 root      rt   0       0      0      0 S   0.0  0.0   0:00.05 watchdog/0                                                       
    12 root      rt   0       0      0      0 S   0.0  0.0   0:00.05 watchdog/1                                                       
    13 root      rt   0       0      0      0 S   0.0  0.0   0:00.13 migration/1                                                      
    14 root      20   0       0      0      0 S   0.0  0.0   0:00.07 ksoftirqd/1                                                      
    16 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/1:0H                                                     
    17 root      rt   0       0      0      0 S   0.0  0.0   0:00.04 watchdog/2                                                       
    18 root      rt   0       0      0      0 S   0.0  0.0   0:00.15 migration/2                                                      
    19 root      20   0       0      0      0 S   0.0  0.0   0:00.32 ksoftirqd/2       

 3. iostat 命令

        iostat 命令用于监控CPU占用率、平均负载值及I/O读写速度等。

cpu的统计信息,如果是多cpu系统,显示的所有cpu的平均统计信息。

  • # %user:用户进程消耗cpu的比例
  • # %nice:用户进程优先级调整消耗的cpu比例
  • # %sys:系统内核消耗的cpu比例
  • # %iowait:等待磁盘io所消耗的cpu比例
  • # %idle:闲置cpu的比例(不包括等待磁盘I/O)

磁盘的统计参数:

  • # tps:该设备每秒的传输次数
  • # the device.)。"一次传输"意思是"一次I/O请求"。
  • # 多个逻辑请求可能会被合并为"一次I/O请求"。"一次传输"请求的大小是未知的。
  • # kB_read/s:每秒从设备(drive expressed)读取的数据量;
  • # kB_wrtn/s:每秒向设备(drive expressed)写入的数据量;
  • # kB_read:读取的总数据量;
  • # kB_wrtn:写入的总数量数据量;这些单位都为Kilobytes。
  • # kb/s显示磁盘信息,每2s刷新一次

iostat -d -k 2

  • # kb/s显示磁盘统计信息及扩展信息,每1s刷新 ,刷新10次结束
  • iostat -dkx 1 10
SUGAP# iostat -x
Linux 3.10.108R8 (SUGAP)        03/19/24        _x86_64_        (4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           4.17    0.00    5.53    0.25    0.00   90.04

Device:         rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
sda               0.00     2.06    0.05    1.01     2.38    12.31    27.71     0.15  141.21   12.26  147.67  34.44   3.65

每个输出消息含义:
rrqm/s:   每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并
wrqm/s:   每秒对该设备的写请求被合并次数
r/s:      每秒完成的读次数
w/s:      每秒完成的写次数
rkB/s:    每秒读数据量(kB为单位)
wkB/s:    每秒写数据量(kB为单位)
avgrq-sz: 平均每次IO操作的数据量(扇区数为单位)
avgqu-sz: 平均等待处理的IO请求队列长度
await:    平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)
svctm:    平均每次IO请求的处理时间(毫秒为单位)
%util:    采用周期内用于IO操作的时间比率,即IO队列非空的时间比率

 4. df 命令

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

[root@master linux]# df -h
文件系统                 容量     已用  可用   已用%   挂载点
devtmpfs                 964M     0    964M    0%     /dev
tmpfs                    978M     0    978M    0%     /dev/shm
tmpfs                    978M  8.9M    969M    1%     /run
tmpfs                    978M     0    978M    0%     /sys/fs/cgroup
/dev/mapper/centos-root   10G  4.0G    6.1G   40%     /
/dev/sda1                197M  181M     16M   93%     /boot
tmpfs                    196M     0    196M    0%     /run/user/0

5. du 命令

用于显示指定目录占用磁盘的大小,在排查磁盘空间使用情况可用。

du -h     # 以人类可读的方式显示,显示M或K
du -s ./  # 显示当前目录大小
du -c     # 显示几个目录或文件占用的磁盘空间大小,还要统计它们的总和
du -lh --max-depth=1  # 查看当前目录下一级子文件和子目录占用的磁盘容量。
---------------------------------------------------------------------

[root@master ~]# du -sh /root/
332M    /root/

[root@master ~]# du -lh --max-depth=1
0       ./.pki
188M    ./mysql
67M     ./kernel
100K    ./linux
9.7M    ./liburing-liburing-2.0
69M     ./libbpf-bootstrap
332M    .

 6. free 命令

  free 命令用于显示系统的内存使用情况,包括物理内存、交换空间以及操作系统的内核缓存情况。

[root@master ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.9G        372M        918M        8.8M        664M        1.4G
Swap:          2.0G          0B        2.0G
--------------------------------------------------------------------------------
total:物理内存总量,以 KB 为单位。
used:已使用的物理内存量,以 KB 为单位。
free:未被使用的物理内存量,以 KB 为单位。
shared:被共享的内存量,通常很少被使用,以 KB 为单位。
buff/cache:系统缓存的内存量,包括文件系统缓存和页面缓存,以 KB 为单位。这部分内存可以根据需要被释放出来,以供应用程序使用。
available:可用内存量,表示可以立即分配给新的应用程序或进程的内存量,以 KB 为单位。这个值是通过系统考虑缓存和页面调度的综合评估计算得出的。

7.  ifconfig 命令

使用 ifconfig 或 ip 命令,来查看网络配置。

ifconfig eth4
eth4      Link encap:Ethernet  HWaddr 00:16:31:E1:D4:3E  
          inet addr:1.0.0.254  Bcast:1.0.31.255  Mask:255.255.224.0
          inet6 addr: 1000:1::a:3/64 Scope:Global
          inet6 addr: fe80::216:31ff:fee1:d43e/64 Scope:Link
          inet6 addr: 1000:1::a:8888/64 Scope:Global
          UP BROADCAST RUNNING MULTICAST  MTU:1500 Metric:1
          RX packets:301642 errors:0 dropped:51 overruns:0 frame:0
          TX packets:984691 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:36256261 (34.5 MiB)  TX bytes:1289214039 (1.2 GiB)
          Interrupt:16 Memory:f7940000-f7960000 
-------------------------------------------------------------------------
有几个需要掌握的指标:
1. 网络接口的状态标志。ifconfig 输出中的 RUNNING ,或 ip 输出中的 LOWER_UP ,都表示物理网络是连通的。
2. MTU 的大小。MTU 默认大小是 1500。
3. 网络接口的 IP 地址、子网以及 MAC 地址。这些都是保障网络功能正常工作所必需的,你需要确保 配置正确。 
4. 网络收发的字节数、包数、错误数以及丢包情况,特别是 TX 和 RX 部分的 errors、dropped、 overruns、carrier 以及 collisions 等指标不为 0 时,通常表示出现了网络 I/O 问题。
● errors 表示发生错误的数据包数,比如校验错误、帧同步错误等;
● dropped 表示丢弃的数据包数,即数据包已经收到了 Ring Buffer,但因为内存不足等原因丢包;
● overruns 表示超限数据包数,即网络 I/O 速度过快,导致 Ring Buffer 中的数据包来不及处理 (队列满) 而导致的丢包;
● carrier 表示发生 carrirer 错误的数据包数,比如双工模式不匹配、物理电缆出现问题等;
● collisions 表示碰撞数据包数。

  8. netstat 命令

        使用netstat 或者 ss ,来查看套接字、网

# head -n 3 表示只显示前面3行
# -l 表示只显示监听套接字
# -n 表示显示数字地址和端口(而不是名字)
# -p 表示显示进程信息
SUGAP# netstat -nlp | head -n 3
Active Internet connections (only servers)
Proto Recv-Q    Send-Q   Local Address               Foreign Address              State       PID/Program name   
tcp        0      0       1.0.0.254:59877             0.0.0.0:*                   LISTEN      2078/transfer 
-----------------------------------------------------------------------------------------
当套接字处于连接状态 (Established) 时:
● Recv-Q 表示套接字缓冲还没有被应用程序取走的字节数(即接收队列长度)。
● Send-Q 表示还没有被远端主机确认的字节数(即发送队列长度)。
当套接字处于监听状态 (Listening) 时:
● Recv-Q 表示全连接队列的长度。
● Send-Q 表示全连接队列的最大长度。
所谓全连接,是指服务器收到了客户端的 ACK,完成了 TCP 三次握手,然后就会把这个连接挪到全连接 队列中。这些全连接中的套接字,还需要被 accept() 系统调用取走,服务器才可以开始真正处理客户端 的请求。

络栈、网络接口以及路由表的信息。

 9. lsof 命令

        lsof 命令负责列出系统中已经打开的文件,包括普通文件,目录,块文件,字符文件,正在执行的文本引用,库,流或者网络文件。

# 查看打开的所有文件
lsof

# 查看 1号进程 打开的文件
lsof -p 1

# 查看打开文件描述符 12 的所有项 
lsof -d 12 

# 查看 TYPE 为 IPV4 的所有项
lsof -i 4

# 查看 协议类型为 UDP 的所有项
lsof -i UDP

-------------------------------------------------

root       8704   8623  0 19:44 pts/2    00:00:00 ./linux/epoll

[root@master ~]# lsof -p 8704
COMMAND  PID USER   FD      TYPE DEVICE SIZE/OFF     NODE NAME
epoll   8704 root  cwd       DIR  253,0     4096 16797761 /root
epoll   8704 root  rtd       DIR  253,0      236       64 /
epoll   8704 root  txt       REG  253,0     9136 18675648 /root/linux/epoll
epoll   8704 root  mem       REG  253,0  2156592    33809 /usr/lib64/libc-2.17.so
epoll   8704 root  mem       REG  253,0   163312    33801 /usr/lib64/ld-2.17.so
epoll   8704 root    0u      CHR  136,2      0t0        5 /dev/pts/2
epoll   8704 root    1u      CHR  136,2      0t0        5 /dev/pts/2
epoll   8704 root    2u      CHR  136,2      0t0        5 /dev/pts/2
epoll   8704 root    3u     IPv4 103039      0t0      TCP *:dls-monitor (LISTEN)
epoll   8704 root    4u  a_inode   0,13        0    10474 [eventpoll]

10. strace 命令

        strace 是一个有用的诊断、指导和调试工具。

 用法:

        strace 可执行程序名称 -h, 踪命令的执行过程显示命令过程中执行的命令、系统调用、进程接收的信号等。

        strace -c 可执行程序名称 -h, 显示命令执行了哪些系统调用信号、耗时、各系统调用次数等。

  • 17
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值