从理论到实践,教你如何使用Linux命令进行系统监控! 在运维中,系统监控是非常重要的一项任务,可以帮助我们及时发现问题并解决。在Linux系统中,有很多命令可以帮助我们对系统进行监控,下面就让我们来一一了解。 1. top top命令可以显示系统的整体运行情况,包括CPU、内存、进程等。在top命令界面中,可以看到系统总体的负载情况以及各个进程的资源占用情况。 下面是top命令的输出示例: ``` top - 18:51:14 up 1:25, 1 user, load average: 2.37, 1.80, 1.50 Tasks: 240 total, 1 running, 239 sleeping, 0 stopped, 0 zombie %Cpu(s): 5.2 us, 1.7 sy, 0.0 ni, 92.9 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st KiB Mem : 16385412 total, 6899516 free, 5371332 used, 4112564 buff/cache KiB Swap: 1048572 total, 1048572 free, 0 used. 10520464 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 907 mysql 20 0 3597752 302316 12292 S 21.9 1.8 22:31.55 mysqld 2679 root 20 0 765368 60468 36896 S 1.6 0.4 0:02.30 snapd 569 root 20 0 0 0 0 I 1.3 0.0 0:05.66 kworker/15:2-events 1685 root 20 0 459924 18596 15516 S 0.6 0.1 0:08.90 systemd-journal 665 root 20 0 395156 27972 20548 S 0.6 0.2 0:02.49 NetworkManager 577 root -51 0 0 0 0 S 0.3 0.0 0:02.92 irq/130-nvidia 774 root 20 0 52516 6136 4920 S 0.3 0.0 0:05.77 upowerd 794 root 20 0 609164 23780 19224 S 0.3 0.1 0:05.80 packagekitd 892 root 20 0 316224 10552 8368 S 0.3 0.1 0:02.64 systemd-logind ``` 2. vmstat vmstat命令可以实时地监控CPU、内存、磁盘等系统资源的使用情况,可以用来发现系统性能问题。 下面是vmstat命令的输出示例: ``` procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 3 0 20664 343188 23916 2365104 0 0 0 0 674 1080 9 2 89 0 0 ``` 其中,r表示运行队列中的进程数,b表示处于不可中断状态的进程数,swpd表示交换空间的使用情况,free表示空闲内存的大小,si和so表示交换空间的输入输出情况,bi和bo表示块设备的输入输出情况,us、sy、id、wa、st表示CPU占用率。 3. sar sar命令可以记录系统的性能数据,并生成报告,可以用来查看系统的历史性能状况。可以使用下面的命令安装sar: ``` sudo apt-get install sysstat ``` 安装完成后,可以使用下面的命令来查看系统的CPU使用情况: ``` sar -u ``` 下面是sar命令的输出示例: ``` Linux 5.4.0-73-generic (ubuntu) 06/04/2021 _x86_64_ (1 CPU) 12:00:01 AM CPU %user %nice %system %iowait %steal %idle 12:10:01 AM all 0.44 0.00 0.12 0.03 0.00 99.41 12:20:01 AM all 0.11 0.02 0.08 0.02 0.00 99.77 12:30:01 AM all 0.47 0.00 0.12 0.03 0.00 99.38 12:40:01 AM all 0.18 0.00 0.09 0.02 0.00 99.71 12:50:01 AM all 0.49 0.00 0.13 0.03 0.00 99.36 01:00:01 AM all 0.09 0.00 0.06 0.02 0.00 99.83 01:10:01 AM all 0.35 0.00 0.10 0.02 0.00 99.52 ``` 4. iostat iostat命令可以监控磁盘活动情况,包括磁盘的读写速度、I/O请求等。 下面是iostat命令的输出示例: ``` Linux 5.4.0-73-generic (ubuntu) 06/04/2021 _x86_64_ (1 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.77 0.00 0.22 0.05 0.00 99.97 Device tps kB_read/s kB_wrtn/s kB_read kB_wrtn loop0 0.27 7.21 0.00 208800 0 sda 5.16 92.60 200.33 2682194 5800849 ``` 其中,tps表示每秒的I/O请求数,kB_read/s表示每秒读取的数据量,kB_wrtn/s表示每秒写入的数据量,kB_read表示总读取数据量,kB_wrtn表示总写入数据量。 5. ps ps命令可以列出系统中当前的进程,可以用来查看进程的状态、占用的资源等信息。 下面是ps命令的输出示例: ``` PID TTY TIME CMD 904 ? 00:00:00 systemd 913 ? 00:00:00 (sd-pam) 930 ? 00:00:00 systemd-journal 941 ? 00:00:00 rngd 942 ? 00:00:00 systemd-udevd 973 ? 00:00:00 systemd-journald 980 ? 00:00:00 systemd-logind 1002 ? 00:00:00 cron 1003 ? 00:00:00 atd 1017 tty1 00:00:00 login 1018 tty1 00:00:00 -bash 1051 tty1 00:00:00 ps ``` 通过以上五个命令,我们可以实时监控系统的性能状况,并发现问题。这些命令也可以用来作为监控系统的基础,配合相关监控工具来实现自动化监控和告警。