监控作用
- 分析CPU的瓶颈
- 分析内存的瓶颈
- 分析I/O的瓶颈
- 分析网络的瓶颈
进程监控
ps
- 作用
- ps 命令将报告当前进程的快照。要选择所有进程,请使用 -A 或 -e 选项
命令示例
进程查询
$ ps aux ## a 所有进程, u 用户格式,x 进程参数,f 父子关系
父进程查询
$ ps ef ## e 所有进程, f 全格式
进程查找
- STAT进程状态
$ 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
命令示例
网络接口查看-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
- 作用
- 查看路由表
例子
作用
- 查看从当前主机发往目标主机中间会经过哪些路由
例子
作用
- 查看当前主机的网卡流量
例子
作用
- 查看以IP为单位的网络流量排名
- 例子
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