监控作用

  • 分析CPU的瓶颈
  • 分析内存的瓶颈
  • 分析I/O的瓶颈
  • 分析网络的瓶颈

进程监控

ps

  • 作用
    • ps 命令将报告当前进程的快照。要选择所有进程,请使用 -A 或 -e 选项

命令示例

进程查询

  1. $ ps aux ## a 所有进程, u 用户格式,x 进程参数,f 父子关系

父进程查询

$ ps ef ## e 所有进程, f 全格式

进程查找

  • STAT进程状态
    • S-睡眠
    • s-表示该进程是会话的先导进程
    • N-表示进程拥有比普通优先级更低的优先级
    • R-正在运行
    • D-短期等待
    • Z-僵死进程
    • T-被跟踪或者被停止
      $ ps -aux | grep java
      

      杀死进程

$ kill -9 PID  ## 强制杀死进程
$ killall PNAME  ## 杀死所有名称相同的进程

进程的树

  • -p 显示经常的PID;
  • -u 显示进程的所属用户
    $ pstree -pu 
    systemd(1)─┬─ModemManager(797)─┬─{ModemManager}(813)
             │                   └─{ModemManager}(834)
             ├─NetworkManager(895)─┬─{NetworkManager}(905)
             │                     └─{NetworkManager}(906)
             ├─VBoxClient(3884,luyang)───VBoxClient(3889)─┬─{VBoxClient}(3895)
             │                                            └─{VBoxClient}(3898)
             ├─VBoxClient(3903,luyang)───VBoxClient(3908)─┬─{VBoxClient}(3911)
             │                                            └─{VBoxClient}(3914)
             ├─VBoxClient(3910,luyang)───VBoxClient(3913)─┬─{VBoxClient}(3917)
             │                                            ├─{VBoxClient}(3921)
             │                                            └─{VBoxClient}(3923)
             ├─VBoxClient(3916,luyang)───VBoxDRMClient(3919,root)
             ├─VBoxService(3029)─┬─{VBoxService}(3030)
             │                   ├─{VBoxService}(3031)
             │                   ├─{VBoxService}(3032)
             │                   ├─{VBoxService}(3033)
             │                   ├─{VBoxService}(3034)
             │                   ├─{VBoxService}(3035)
             │                   ├─{VBoxService}(3036)
             │                   └─{VBoxService}(3038)
             ├─abrt-dump-journ(828)
             ├─abrt-dump-journ(833)
             ├─abrtd(774)─┬─{abrtd}(810)
             │            └─{abrtd}(819)
             ├─accounts-daemon(879)─┬─{accounts-daemon}(882)
             │                      └─{accounts-daemon}(884)
    

系统监控

top命令

top 命令显示 Linux 进程。它提供了正在运行的系统的动态实时视图,即实际过程活动。默认情况下,它会显示服务器上运行的 CPU 密集程度最高的任务,并每五秒更新一次列表。

命令示例

交互操作

  • p 以CPU使用率排序,默认就是此项
  • M 以内存的使用率排序
  • N 以PID排序
  • u 查看指定用户的进程
  • k 杀死指定的进程,需要指定信号量,一般是9,强制终止
  • q 退出top ```basic

    top - d 10 ## 每10秒刷新一次

top - 06:03:29 up 10:25, 1 user, load average: 0.02, 0.03, 0.03 ## 当负载高于0.7表示负载较大 Tasks: 207 total, 1 running, 206 sleeping, 0 stopped, 0 zombie ## 注意僵死进程内存没有释放 %Cpu(s): 1.4 us, 6.1 sy, 0.0 ni, 86.1 id, 0.4 wa, 5.7 hi, 0.4 si, 0.0 st MiB Mem : 3736.9 total, 1552.0 free, 937.3 used, 1247.6 buff/cache MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 2534.2 avail Mem

PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                                                                                     

3504 luyang 20 0 3028732 337788 120152 S 8.6 8.8 1:37.39 gnome-shell
30670 root 20 0 0 0 0 I 2.3 0.0 0:01.17 kworker/u2:2-events_unbound
26385 luyang 20 0 538276 52092 35952 S 1.0 1.4 0:03.56 gnome-terminal-
3418 luyang 9 -11 1171908 15880 10616 S 0.7 0.4 0:01.71 pulseaudio
3670 luyang 20 0 487912 14964 12832 S 0.3 0.4 0:04.26 gsd-smartcard
1 root 20 0 189296 17124 9704 S 0.0 0.4 0:08.58 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp
4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp
6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-events_highpri
8 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq
9 root 20 0 0 0 0 S 0.0 0.0 0:01.17 ksoftirqd/0
10 root 20 0 0 0 0 I 0.0 0.0 0:00.33 rcu_sched
11 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
12 root rt 0 0 0 0 S 0.0 0.0 0:00.04 watchdog/0
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/0
15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
16 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 netns
17 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kauditd


<a name="vkIoC"></a>
#### 按照用户进程查看
```basic
$ ps  -u luyang

top - 06:16:59 up 10:38,  1 user,  load average: 0.35, 0.15, 0.06
Tasks: 206 total,   1 running, 205 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.7 us,  6.9 sy,  0.0 ni, 87.7 id,  0.0 wa,  4.7 hi,  0.0 si,  0.0 st
MiB Mem :   3736.9 total,   1545.4 free,    937.6 used,   1254.0 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   2533.9 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                                                                                     
   3504 luyang    20   0 3028732 339924 120152 S   9.0   8.9   1:50.33 gnome-shell                                                                                                                                 
  26385 luyang    20   0  538276  51912  35952 S   1.0   1.4   0:05.09 gnome-terminal-                                                                                                                             
   3396 luyang    20   0  100992  10592   8920 S   0.0   0.3   0:00.15 systemd                                                                                                                                     
   3401 luyang    20   0  264924   5768     12 S   0.0   0.2   0:00.00 (sd-pam)                                                                                                                                    
   3418 luyang     9 -11 1171908  15880  10616 S   0.0   0.4   0:01.71 pulseaudio                                                                                                                                  
   3423 luyang    20   0  307208   7472   6240 S   0.0   0.2   0:00.02 gnome-keyring-d                                                                                                                             
   3429 luyang    20   0  340368  13228  11592 S   0.0   0.3   0:00.01 gdm-wayland-ses                                                                                                                             
   3433 luyang    20   0   85572   6684   5300 S   0.0   0.2   0:00.32 dbus-daemon                                                                                                                                 
   3437 luyang    20   0  732564  19540  14612 S   0.0   0.5   0:00.29 gnome-session-b

htop

  • 作用
    • Htop是一个非常先进的交互式实时 Linux 进程监控工具。这与 Linux top 命令非常相似,但它具有一些丰富的功能,例如用于管理进程的用户友好界面、快捷键、进程的垂直和水平视图等等。Htop 是第三方工具,Linux 系统中不包含,您需要使用YUM包管理器工具安装它
  • 例子
    • $ htop

atop

  • 作用
    • atop 是一个非常强大的交互式监视器,用于查看 Linux 系统上的负载。它从性能的角度显示最关键的硬件资源。您可以快速查看 CPU、内存、磁盘和网络性能。它显示了哪些进程负责进程级别上有关 CPU 和内存负载的指示负载
  • 例子
    • $ atop

w 命令

  • 作用
    • w 命令显示有关当前在机器上的用户及其进程的信息。 示例输出:
  • 例子
    • $ w vivek

uptime

  • 作用
    • uptime 命令可用于查看服务器运行了多长时间。当前时间、系统运行了多长时间、当前登录的用户数以及过去 1、5 和 15 分钟的系统负载平均值。
  • 例子
    • $ uptime

nmon

  • 作用
    • nmon 是 Linux 系统管理员用于调整目的的终极工具。它可以显示来自 cli 的 CPU、内存、网络、磁盘、文件系统、NFS、顶级进程资源和分区信息
  • 例子
    • $ nmon

CPU监控

mpstat

  • 作用
    • mpstat 命令显示每个可用处理器的活动,处理器 0 是第一个。mpstat -P ALL 显示每个处理器的平均 CPU 利用率
  • 例子
    • $ mpstat -P ALL

内存监控

vmstat

  • 作用
    • vmstat命令用于显示虚拟内存、内核线程、磁盘、系统进程、I/O 块、中断、CPU 活动等的统计信息。默认情况下 vmstat 命令在 Linux 系统下不可用,您需要安装一个名为sysstat的包
  • 例子

free

  • 作用
    • free 命令显示系统中空闲和使用的物理内存和交换内存的总量,以及内核使用的缓冲区
  • 例子
    • $ free

pmap

  • 作用
    • pmap 命令报告进程的内存映射。使用此命令可以找出内存瓶颈的原因
  • 例子
    • $ pmap -d PID

I/O监控

iotop

  • 作用
    • Iotop也与top 命令和Htop 程序非常相似,但它具有记帐功能,可以实时监控和显示磁盘 I/O和进程。此工具对于查找进程的确切进程和高使用磁盘读/写非常有用。

命令示例

$ iotop

Total DISK READ :    0.00 B/s | Total DISK WRITE :       0.00 B/s
Actual DISK READ:    0.00 B/s | Actual DISK WRITE:       0.00 B/s
    TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                                                                                                                                           
      1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % systemd --switched-root --system --deserialize 18
      2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
      3 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcu_gp]
      4 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcu_par_gp]
      6 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/0:0H-events_highpri]
      8 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [mm_percpu_wq]
      9 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]
     10 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [rcu_sched]
     11 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/0]
     12 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/0]
     13 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [cpuhp/0]
     15 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kdevtmpfs]
     16 be/0 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [netns]
     17 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kauditd]

lsblk

  • 作用
    • 查询分区

命令示例

[luyang@localhost ~]$ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   20G  0 disk 
├─sda1   8:1    0    2G  0 part /boot
├─sda2   8:2    0   16G  0 part /
└─sda3   8:3    0    2G  0 part [SWAP]
sr0     11:0    1 58.2M  0 rom  /run/media/luyang/VBox_GAs_6.1.22

磁盘使用量-df

命令示例

[luyang@localhost ~]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        1.8G     0  1.8G   0% /dev
tmpfs           1.9G     0  1.9G   0% /dev/shm
tmpfs           1.9G  9.3M  1.9G   1% /run
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda2        16G  6.9G  8.1G  47% /
/dev/sdb1       2.0G  6.1M  1.9G   1% /sdb1disk
/dev/sda1       2.0G  204M  1.6G  12% /boot
tmpfs           374M  4.6M  370M   2% /run/user/1000
/dev/sr0         59M   59M     0 100% /run/media/luyang/VBox_GAs_6.1.22

目录使用量-du

  • du -h查询指定目录的磁盘占用情况,默认为当前目录
    • -s 指定目录占用大小汇总
    • -h 带计量单位
    • -a 含文件
    • —max-depth=1 子目录深度
    • -c 列出明细的同时,增加汇总值

命令示例

[luyang@localhost ~]$ du -hac --max-depth=1 /home/luyang
4.0K    /home/luyang/Music
4.0K    /home/luyang/Videos
4.0K    /home/luyang/.vboxclient-seamless.pid
492K    /home/luyang/.local
4.0K    /home/luyang/Documents
184K    /home/luyang/.config
4.0K    /home/luyang/Downloads
42M    /home/luyang/.cache
4.0K    /home/luyang/.bash_profile
8.0K    /home/luyang/.pki
4.0K    /home/luyang/.esd_auth
4.0K    /home/luyang/.vboxclient-clipboard.pid
4.0K    /home/luyang/Desktop
4.0K    /home/luyang/.vboxclient-draganddrop.pid
4.0K    /home/luyang/Pictures
4.0K    /home/luyang/.ICEauthority
4.0K    /home/luyang/.bash_logout
4.0K    /home/luyang/.vboxclient-display-svga-x11.pid
4.0K    /home/luyang/Templates
4.0K    /home/luyang/Public
4.0K    /home/luyang/.bash_history
4.0K    /home/luyang/.zshrc
4.0K    /home/luyang/.bashrc
13M    /home/luyang/.mozilla
55M    /home/luyang
55M    total

iostat

  • 作用
    • IoStat是一个简单的工具,它将收集和显示系统输入和输出存储设备统计信息。该工具通常用于跟踪存储设备性能问题,包括设备、本地磁盘、NFS等远程磁盘
  • 例子
    • $ iostat

lsof

  • 作用
    • lsof命令在许多Linux/Unix类系统中使用,用于显示所有打开的文件和进程的列表。打开的文件包括磁盘文件、网络套接字、管道、设备和进程。使用此命令的主要原因之一是无法卸载磁盘并显示正在使用或打开文件的错误。使用此命令,您可以轻松识别正在使用的文件。此命令最常见的格式是
  • 例子
    • $ lsof

sar

  • 作用
    • sar 命令用于收集、报告和保存系统活动信息
  • 例子
    • $ sar -n DEV | more

nethogs

  • 作用
    • NetHogs 是一个小而方便的网顶工具。它按进程名称(例如 Firefox、wget 等)对带宽进行分组。如果网络流量突然爆发,请启动 NetHogs。您将看到哪个 PID 导致带宽激增
  • 例子
    • $ sudo nethogs

网络监控

vnstat

  • 作用
    • vnstat 是易于使用的基于控制台的 Linux 网络流量监视器。它保留所选接口的每小时、每天和每月网络流量的日志
  • 例子
    • $ vnstat

tcpdump

  • 作用
    • Tcpdump是使用最广泛的命令行网络数据包分析器或数据包嗅探器程序之一,用于捕获或过滤通过网络在特定接口上接收或传输的TCP/IP数据包。它还提供了将捕获的包保存在文件中以供以后分析的选项。tcpdump 几乎在所有主要的 Linux 发行版中都可用。
  • 例子
    • tcpdump -i eth0

命令示例

$ tcpdump -i ens33 host 192.168.200.1 and port 22 >> /opt/tcpdump.log  ## 监听某个网卡的IP和端口号的tcp实时信息

hostname

  • 作用
    • 查看当前主机名

命令示例

查看主机名-hostname

hostname

ping

  • 作用
    • 检查目标IP是否可达

命令示例

网络的连通性-ping

$ ping www.baidu.com
PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data.
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=1 ttl=55 time=14.1 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=2 ttl=55 time=11.8 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=3 ttl=55 time=14.7 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=4 ttl=55 time=10.1 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=5 ttl=55 time=11.9 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=6 ttl=55 time=9.98 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=7 ttl=55 time=13.4 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=8 ttl=55 time=11.2 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=9 ttl=55 time=13.8 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=10 ttl=55 time=10.7 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=11 ttl=55 time=8.20 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=12 ttl=55 time=7.91 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=13 ttl=55 time=9.100 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=14 ttl=55 time=9.26 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=15 ttl=55 time=16.0 ms

telnet

  • 作用
    • 检查目标端口是否可达
  • 例子

    • telnet

      ifconfig

  • 作用

    • 查看网卡

命令示例

网络接口查看-ifconfig

$ ifconfig
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255
        inet6 fe80::a00:27ff:fecb:fbb0  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:cb:fb:b0  txqueuelen 1000  (Ethernet)
        RX packets 7591  bytes 11054151 (10.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1809  bytes 123127 (120.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 436  bytes 26160 (25.5 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 436  bytes 26160 (25.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:1e:6f:c8  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

route

  • 作用
    • 查看路由表
  • 例子

    • route –n

      traceroute

  • 作用

    • 查看从当前主机发往目标主机中间会经过哪些路由
  • 例子

    • traceroute –i

      iptraf

  • 作用

    • 查看当前主机的网卡流量
  • 例子

    • iptraf -ng

      iftop

  • 作用

    • 查看以IP为单位的网络流量排名
  • 例子
    • iftop –n

      netstat

Netstat是一个命令行工具,用于监控传入和传出的网络数据包统计信息以及接口统计信息。它是每个系统管理员监控网络性能和解决网络相关问题的非常有用的工具

  • 常用选项
    • -an 排序输出
    • -p 显示那个进程在调用
    • -l Show only listening sockets. (These are omitted by default)
    • -n Show numerical addresses instead of trying to determine symbolic host, port or user names.

命令示例

# netstat -anp

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      1549/dnsmasq        
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      29853/sshd          
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      911/cupsd           
tcp        0      0 127.0.0.1:44321         0.0.0.0:*               LISTEN      1463/pmcd           
tcp        0      0 127.0.0.1:4330          0.0.0.0:*               LISTEN      2375/pmlogger       
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd             ## LISTEN
tcp       32      0 10.0.2.15:47366         8.43.85.13:443          CLOSE_WAIT  3504/gnome-shell      ## CLOSE_WAIT
tcp6       0      0 :::22                   :::*                    LISTEN      29853/sshd            ## ::: 表示 IPV6
tcp6       0      0 ::1:631                 :::*                    LISTEN      911/cupsd           
tcp6       0      0 ::1:44321               :::*                    LISTEN      1463/pmcd           
tcp6       0      0 ::1:4330                :::*                    LISTEN      2375/pmlogger       
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
udp        0      0 0.0.0.0:33586           0.0.0.0:*                           789/avahi-daemon: r 
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           789/avahi-daemon: r 
udp        0      0 192.168.122.1:53        0.0.0.0:*                           1549/dnsmasq        
udp        0      0 0.0.0.0:67              0.0.0.0:*                           1549/dnsmasq        
udp        0      0 10.0.2.15:68            10.0.2.2:67             ESTABLISHED 895/NetworkManager     ## ESTABLISHED
udp        0      0 0.0.0.0:111             0.0.0.0:*                           1/systemd           
udp        0      0 127.0.0.1:323           0.0.0.0:*                           792/chronyd         
udp6       0      0 :::35827                :::*                                789/avahi-daemon: r 
udp6       0      0 :::5353                 :::*                                789/avahi-daemon: r 
udp6       0      0 :::111                  :::*                                1/systemd           
udp6       0      0 ::1:323                 :::*                                792/chronyd         
raw6       0      0 :::58                   :::*                    7           895/NetworkManager  
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name     Path
unix  2      [ ACC ]     STREAM     LISTENING     22521    836/sssd_be          /var/lib/sss/pipes/private/sbus-dp_implicit_files.836
unix  2      [ ACC ]     STREAM     LISTENING     40443    3437/gnome-session-  @/tmp/.ICE-unix/3437
unix  2      [ ACC ]     STREAM     LISTENING     94981    2375/pmlogger        /run/pcp/pmlogger.2375.socket
unix  2      [ ACC ]     STREAM     LISTENING     39941    3423/gnome-keyring-  /run/user/1000/keyring/control
unix  2      [ ACC ]     STREAM     LISTENING     16141    1/systemd            /run/rpcbind.sock
unix  2      [ ACC ]     SEQPACKET  LISTENING     15633    1/systemd            /run/udev/control