了解单个进程或整个系统消耗多少 CPU 或内存。
系统管理员经常需要处理由于 CPU、内存或网络使用率过高而导致应用程序缓慢或无响应的事件。如果您的服务器仅托管一个进程,您可以轻松地发现该进程何时消耗您的所有资源。然而,想象一下一个共享服务器上运行着多个服务。我需要找出哪个服务消耗了所有资源。
有许多监控软件可以立即执行此操作。但是,如果您没有该解决方案或正在寻找基于命令的解决方案,请使用此处。所有这些都是免费的。

多于
一个好的起点是查看top或htop结果以了解该过程的概述。
您将很好地了解所有进程正在利用什么,如下所示。看第一个,MySQL 使用了 11.9% 和 2.5% 的 CPU。
top - 11:57:33 up 0 min, 1 user, load average: 3.69, 0.96, 0.32
Tasks: 165 total, 2 running, 113 sleeping, 0 stopped, 0 zombie
%Cpu(s): 21.0 us, 5.5 sy, 0.0 ni, 70.5 id, 1.7 wa, 0.0 hi, 1.3 si, 0.0 st
KiB Mem : 7637308 total, 5802888 free, 849512 used, 984908 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 6495648 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1986 netdata 20 0 1738856 191560 22948 S 11.6 2.5 0:02.30 mysqld
3021 www-data 20 0 255288 78420 55484 S 6.6 1.0 0:01.55 php-fpm
3138 www-data 20 0 253096 79780 59228 S 6.6 1.0 0:00.92 php-fpm
3153 www-data 20 0 255116 79088 56472 S 5.0 1.0 0:00.70 php-fpm
3037 www-data 20 0 257200 81088 56216 S 4.3 1.1 0:01.50 php-fpm
3048 www-data 20 0 257088 78740 55380 S 4.3 1.0 0:01.46 php-fpm
3054 www-data 20 0 254160 72168 52108 S 3.7 0.9 0:01.32 php-fpm
3135 www-data 20 0 255084 75912 54836 S 3.7 1.0 0:00.91 php-fpm
3051 www-data 20 0 254096 73804 51964 S 3.0 1.0 0:01.38 php-fpm
2962 www-data 20 0 45280 7284 3488 R 2.0 0.1 0:00.22 openresty
1062 netdata 20 0 338748 76144 6720 S 1.0 1.0 0:01.31 netdata
1702 netdata 20 0 21852 4232 2352 S 1.0 0.1 0:00.34 apps.plugin
1729 netdata 20 0 18636 3280 2764 S 0.7 0.0 0:00.05 bash
1980 netdata 20 0 62008 12896 5796 S 0.7 0.2 0:00.14 redis-server
11 root 20 0 0 0 0 I 0.3 0.0 0:00.14 rcu_sched
1007 root 20 0 1347424 74524 38872 S 0.3 1.0 0:00.92 dockerd
1857 root 20 0 10600 5564 4276 S 0.3 0.1 0:00.03 containerd-shim
2045 root 20 0 9948 6028 5016 S 0.3 0.1 0:00.14 forego
2934 root 20 0 13616 8760 5928 S 0.3 0.1 0:00.07 docker-gen
2966 systemd+ 20 0 25784 7924 2340 S 0.3 0.1 0:00.06 nginx几乎所有 Linux 发行版上都安装了top 。
一旦确定了嫌疑人,您可能需要关注整个过程,而不是上面看到的所有内容。您仍然可以使用带参数的top命令。
假设您知道进程 ID (PID)。您可以使用以下命令:
top -p $PID
下面是top -p 3102的示例。
top - 11:59:56 up 3 min, 1 user, load average: 0.72, 0.70, 0.31
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
%Cpu(s): 7.1 us, 2.9 sy, 0.0 ni, 89.1 id, 0.3 wa, 0.0 hi, 0.7 si, 0.0 st
KiB Mem : 7637308 total, 5802024 free, 783672 used, 1051612 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 6555636 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3102 www-data 20 0 329500 82376 60640 S 0.0 1.1 0:03.35 php-fpm它也可以与grep top一起使用。以下是查看Docker使用状态的示例。
root@-com:~# top | grep docker
1007 root 20 0 1347424 74524 38872 S 0.3 1.0 0:01.38 dockerd
2934 root 20 0 14676 9652 5928 S 0.3 0.1 0:00.54 docker-gen
1007 root 20 0 1347424 74524 38872 S 0.3 1.0 0:01.39 dockerd
1007 root 20 0 1347424 74524 38872 S 1.0 1.0 0:01.42 dockerd
2934 root 20 0 14740 9652 5928 S 0.3 0.1 0:00.55 docker-gen
2934 root 20 0 14740 9652 5928 S 0.3 0.1 0:00.56 docker-gen 
h 顶
与顶部类似,但包含更多信息。正如您所看到的,我们有一个命令列可以帮助我们识别进程路径。而且它的颜色也是丰富多彩的。
默认情况下可能未安装 htop,但您始终可以按如下方式安装它:
在 Ubuntu 上安装 htop
apt-get install htop在 CentOS/RHEL 8.x 上安装 htop
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
dnf update
dnf install htop 
一眼
顾名思义,它允许您在一个屏幕上查看系统使用情况。正在运行的进程按 CPU 使用率排序。
您可以使用 DNF 在 CentOS 8 上安装 Glance,如下所示。
dnf install glances对于 CentOS7,您可以使用 YUM
yum install glances 在上面
它与上面列出的类似,但具有将输出记录到稍后可以查看的文件的良好功能。想象一下存在一种模式,其中问题在特定时间范围内发生。您可以使用 crontab 或类似工具安排将输出写入文件,然后稍后播放。
要将输出记录到文件中:
atop -w filename并玩:
atop -r filename强烈建议参考手册页,因为它支持多个参数,例如间隔、样本等。
如果您对实时故障排除感兴趣,只需运行atop ,您应该会看到如下内容:
也可以如下图安装在上面。
dnf install atop附注
我们来检查一下ps命令。
您可以使用带 PID 的 ps 命令来打印 CPU 和内存使用情况。
ps -p $PID -o %cpu,%mem输出应如下所示:
root@sr-master-us:~# ps -p 1048 -o %cpu,%mem
%CPU %MEM
0.2 3.0
root@sr-master-us:~#嗯嗯
交互式命令行监控工具,可监控 CPU、内存、磁盘、网络、NFS 和虚拟内存使用情况。要查看最重要的进程(按使用情况),请运行nmon并按t按钮。
nmon 可以按如下方式安装。
dnf install nmon监视器
Monit是一个基于 Web 的命令行开源解决方案,用于监视服务器资源、守护程序、文件、目录、文件系统等。
Monit 还有一些很酷的小部件。
一款轻量级的监控软件。但这里还有更多值得探索的地方。
监控利克斯
用于监控 Linux 服务器的轻量级开源实用程序。 Monitorix具有内置 HTTP,因此您可以通过网络检查使用状态等。其他使用情况报告包括:
- 核心/温度
- 文件系统和 I/O
- 网络流量
- Apache/邮件/FTP/Nginx
- MySQL/Varnish/Memcached
Monitorix 还提供警报设置,以便您在出现问题时收到通知。如果您管理基于云的服务器并正在寻找主动监控解决方案,那么这是一个不错的选择。
网络数据
Netdata实时监控系统资源、应用程序、Web 服务器、数据库、DNS、电子邮件、硬件传感器等的性能。它是开源的,因此很容易上手。所有数据都经过收集、存储和流式传输,以实现交互式可视化。每秒都会收集数据,因此您不会错过任何内容。
深受众多行业领袖的喜爱。
所以,你还在等什么,尝试控制你的 Linux 服务器。
布托普
btop是一个完全交互式且有用的资源监视器,具有漂亮的 UI,可帮助您管理 Linux 服务器。

轻松地在树视图中可视化您的进程,并从进程列表中过滤它们以管理资源消耗。 btop 还包括显示网络使用情况的自动缩放图表。
此外,您还可以检查磁盘速度和完整的 I/O 活动。
在 Linux、FreeBSD 和 macOS 上还有更多体验可供体验。
结论
我们希望上述工具能够帮助您实时可视化服务器的使用情况,并允许您采取必要的操作。如果您刚刚开始担任系统管理员并需要一些实践培训,请查看此Udemy 课程。




![2021 年如何设置 Raspberry Pi Web 服务器 [指南]](https://i0.wp.com/pcmanabu.com/wp-content/uploads/2019/10/web-server-02-309x198.png?w=1200&resize=1200,0&ssl=1)

