介绍
每个计算机系统都受益于适当的管理和监控,监控系统的运行方式将有助于您发现问题并快速解决问题。
有大量的命令行实用程序为此而创建,本指南将介绍您在工具箱中的一些最有用的应用程序。
前提条件
要跟随这个指南,你需要访问运行基于Linux的操作系统的计算机. 它可以是一个虚拟的私人服务器,你已经连接到SSH或你的本地机器. 请注意,本教程是通过使用运行Ubuntu 20.04的Linux服务器验证的,但所示的例子应该在运行任何Linux发行版的计算机上工作。
如果您打算使用远程服务器来遵循本指南,我们建议您先完成我们的 初始服务器设置指南。
步骤1:如何在Linux中查看运行过程
您可以通过使用顶部
命令查看在您的服务器上运行的所有流程:
1top
1[secondary_label Output]
2top - 15:14:40 up 46 min, 1 user, load average: 0.00, 0.01, 0.05
3Tasks: 56 total, 1 running, 55 sleeping, 0 stopped, 0 zombie
4Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
5Mem: 1019600k total, 316576k used, 703024k free, 7652k buffers
6Swap: 0k total, 0k used, 0k free, 258976k cached
7
8 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9 1 root 20 0 24188 2120 1300 S 0.0 0.2 0:00.56 init
10 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
11 3 root 20 0 0 0 0 S 0.0 0.0 0:00.07 ksoftirqd/0
12 6 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
13 7 root RT 0 0 0 0 S 0.0 0.0 0:00.03 watchdog/0
14 8 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 cpuset
15 9 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper
16 10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
第一几个输出行提供系统统计数据,例如CPU/内存负载和运行任务总数。
您可以看到有 1 个运行过程,以及 55 个被认为是 sleeping 的过程,因为它们没有积极使用 CPU 周期。
显示的剩余输出显示了运行过程及其使用统计数据。默认情况下,顶部
会自动按CPU使用量排序这些过程,因此您可以首先看到最繁忙的过程。顶部
将继续在您的壳中运行,直到您使用标准的键组合Ctrl+C
来停止运行过程。
在Ubuntu 20.04上,你可以用apt
安装它:
1sudo apt install htop
之后,HOTP
命令将可用:
1htop
1[secondary_label Output]
2 Mem[||||||||||| 49/995MB] Load average: 0.00 0.03 0.05
3 CPU[ 0.0%] Tasks: 21, 3 thr; 1 running
4 Swp[ 0/0MB] Uptime: 00:58:11
5
6 PID USER PRI NI VIRT RES SHR S CPU% MEM% TIME+ Command
7 1259 root 20 0 25660 1880 1368 R 0.0 0.2 0:00.06 htop
8 1 root 20 0 24188 2120 1300 S 0.0 0.2 0:00.56 /sbin/init
9 311 root 20 0 17224 636 440 S 0.0 0.1 0:00.07 upstart-udev-brid
10 314 root 20 0 21592 1280 760 S 0.0 0.1 0:00.06 /sbin/udevd --dae
11 389 messagebu 20 0 23808 688 444 S 0.0 0.1 0:00.01 dbus-daemon --sys
12 407 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.02 rsyslogd -c5
13 408 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.00 rsyslogd -c5
14 409 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.00 rsyslogd -c5
15 406 syslog 20 0 243M 1404 1080 S 0.0 0.1 0:00.04 rsyslogd -c5
16 553 root 20 0 15180 400 204 S 0.0 0.0 0:00.01 upstart-socket-br
htop
提供更好的多 CPU 线程的可视化,现代终端的色彩支持的更好认识,以及更多的排序选项,其他功能。 与 top
不同,它并不总是默认安装,但可以被视为一个 drop-in 替代。
以下是一些键盘快捷键,可以帮助您更有效地使用 htop:
- M:按内存使用分类过程
- P:按处理器使用分类过程
- ?:访问帮助
- k:杀死当前/标记的过程
- ** F2**:配置 htop. 您可以在这里选择显示选项。
有许多其他选项可以通过帮助或设置访问. 这些应该是您探索 htop 的功能的第一站. 在下一步,您将学习如何监控网络带宽。
步骤2 – 如何监控您的网络带宽
如果你的网络连接看起来过度使用,你不确定哪个应用程序是罪魁祸首,一个名为nethogs
的程序是一个很好的选择来找出。
在Ubuntu上,您可以使用以下命令安装nethogs:
1sudo apt install nethogs
之后,nethogs
命令将可用:
1nethogs
1[secondary_label Output]
2NetHogs version 0.8.0
3
4 PID USER PROGRAM DEV SENT RECEIVED
53379 root /usr/sbin/sshd eth0 0.485 0.182 KB/sec
6820 root sshd: root@pts/0 eth0 0.427 0.052 KB/sec
7? root unknown TCP 0.000 0.000 KB/sec
8
9 TOTAL 0.912 0.233 KB/sec
nethogs
将每个应用程序与其网络流量相关联。
您可以使用几个命令来控制nethogs
:
- M:在
kb/s
,kb
,b
和mb
之间更改显示。 - R:按收到的流量排序。
’iptraf-ng’是监控网络流量的另一种方式,它提供了多种不同的交互式监控接口。
<$>[注] 注: IPTraf 需要至少为 80 列和 24 行的屏幕大小。
在Ubuntu上,您可以使用以下命令安装iptraf-ng
:
1sudo apt install iptraf-ng
iptraf-ng
需要用根特权运行,所以你应该先用sudo
运行:
1sudo iptraf-ng
您将收到一个使用流行的命令行界面框架的菜单,称为ncurses
。
通过此菜单,您可以选择您想要访问的界面。
例如,要查看所有网络流量,您可以选择第一个菜单,然后选择所有接口
。
在这里,您可以看到您在所有网络接口中通信的IP地址。
如果您想将这些 IP 地址解决为域,您可以通过退出流量屏幕,选择配置
,然后转到反向 DNS 搜索
来启用反向 DNS 搜索。
您还可以启用TCP/UDP 服务名称
,以查看正在运行的服务名称,而不是端口号。
如果启用了这两个选项,显示器可能看起来像这样:
netstat
命令是收集网络信息的另一个多功能工具。
「netstat」默认安装在大多数现代系统上,但您可以通过从服务器的默认包存库下载来自行安装它。
1sudo apt install net-tools
默认情况下,netstat
命令自行打印了打开的插头列表:
1netstat
1[secondary_label Output]
2Active Internet connections (w/o servers)
3Proto Recv-Q Send-Q Local Address Foreign Address State
4tcp 0 0 192.241.187.204:ssh ip223.hichina.com:50324 ESTABLISHED
5tcp 0 0 192.241.187.204:ssh rrcs-72-43-115-18:50615 ESTABLISHED
6Active UNIX domain sockets (w/o servers)
7Proto RefCnt Flags Type State I-Node Path
8unix 5 [ ] DGRAM 6559 /dev/log
9unix 3 [ ] STREAM CONNECTED 9386
10unix 3 [ ] STREAM CONNECTED 9385
11. . .
如果您添加一个-a
选项,它会列出所有端口,倾听和不倾听:
1netstat -a
1[secondary_label Output]
2Active Internet connections (servers and established)
3Proto Recv-Q Send-Q Local Address Foreign Address State
4tcp 0 0 *:ssh *:* LISTEN
5tcp 0 0 192.241.187.204:ssh rrcs-72-43-115-18:50615 ESTABLISHED
6tcp6 0 0 [::]:ssh [::]:* LISTEN
7Active UNIX domain sockets (servers and established)
8Proto RefCnt Flags Type State I-Node Path
9unix 2 [ ACC ] STREAM LISTENING 6195 @/com/ubuntu/upstart
10unix 2 [ ACC ] STREAM LISTENING 7762 /var/run/acpid.socket
11unix 2 [ ACC ] STREAM LISTENING 6503 /var/run/dbus/system_bus_socket
12. . .
如果您想过滤以查看仅有 TCP 或 UDP 连接,则分别使用-t
或-u
旗帜:
1netstat -at
1[secondary_label Output]
2Active Internet connections (servers and established)
3Proto Recv-Q Send-Q Local Address Foreign Address State
4tcp 0 0 *:ssh *:* LISTEN
5tcp 0 0 192.241.187.204:ssh rrcs-72-43-115-18:50615 ESTABLISHED
6tcp6 0 0 [::]:ssh [::]:* LISTEN
通过-s
旗帜查看统计数据:
1netstat -s
1[secondary_label Output]
2Ip:
3 13500 total packets received
4 0 forwarded
5 0 incoming packets discarded
6 13500 incoming packets delivered
7 3078 requests sent out
8 16 dropped because of missing route
9Icmp:
10 41 ICMP messages received
11 0 input ICMP message failed.
12 ICMP input histogram:
13 echo requests: 1
14 echo replies: 40
15. . .
如果你想连续更新输出,你可以使用c
旗帜.有许多其他选项可用于netstat,你可以通过审查其 手册页面来了解。
在下一步中,您将学习一些有用的方法来监控您的磁盘使用。
步骤3 – 如何监控您的磁盘使用
要快速了解您的附加驱动器上留有多少磁盘空间,您可以使用df
程序。
没有任何选项,它的输出看起来像这样:
1df
1[secondary_label Output]
2Filesystem 1K-blocks Used Available Use% Mounted on
3/dev/vda 31383196 1228936 28581396 5% /
4udev 505152 4 505148 1% /dev
5tmpfs 203920 204 203716 1% /run
6none 5120 0 5120 0% /run/lock
7none 509800 0 509800 0% /run/shm
这会输出字节中的磁盘使用量,这可能有点难以读取。
若要修复此问题,您可以将输出指定为人类可读格式:
1df -h
1[secondary_label Output]
2Filesystem Size Used Avail Use% Mounted on
3/dev/vda 30G 1.2G 28G 5% /
4udev 494M 4.0K 494M 1% /dev
5tmpfs 200M 204K 199M 1% /run
6none 5.0M 0 5.0M 0% /run/lock
7none 498M 0 498M 0% /run/shm
如果你想看到所有文件系统中可用的总磁盘空间,你可以通过--total
选项。
1df -h --total
1[secondary_label Output]
2Filesystem Size Used Avail Use% Mounted on
3/dev/vda 30G 1.2G 28G 5% /
4udev 494M 4.0K 494M 1% /dev
5tmpfs 200M 204K 199M 1% /run
6none 5.0M 0 5.0M 0% /run/lock
7none 498M 0 498M 0% /run/shm
8total 32G 1.2G 29G 4%
df
可以提供有用的概述,另一个命令du
则会根据目录进行分解。
du
将分析当前目录和任何子目录的使用情况. 在几乎空的 Home 目录中运行的 du
的默认输出看起来如下:
1du
1[secondary_label Output]
24 ./.cache
38 ./.ssh
428 .
再次,您可以通过传输它 -h
来指定人类可读的输出:
1du -h
1[secondary_label Output]
24.0K ./.cache
38.0K ./.ssh
428K .
若要查看文件大小以及目录,请键入以下内容:
1du -a
1[secondary_label Output]
20 ./.cache/motd.legal-displayed
34 ./.cache
44 ./.ssh/authorized_keys
58 ./.ssh
64 ./.profile
74 ./.bashrc
84 ./.bash_history
928 .
对于底部的总数,您可以添加 -c
选项:
1du -c
1[secondary_label Output]
24 ./.cache
38 ./.ssh
428 .
528 total
如果您只对总和感兴趣,而不是具体情况,您可以发行:
1du -s
1[secondary_label Output]
228 .
还有一个为du
的ncurses
界面,适当地称为ncdu
,您可以安装:
1sudo apt install ncdu
这将图形上表示您的磁盘使用情况:
1ncdu
1[secondary_label Output]
2--- /root ----------------------------------------------------------------------
3 8.0KiB [##########] /.ssh
4 4.0KiB [##### ] /.cache
5 4.0KiB [##### ] .bashrc
6 4.0KiB [##### ] .profile
7 4.0KiB [##### ] .bash_history
您可以通过使用向上和向下箭头进入文件系统,并在任何目录条目上按下 Enter。
在最后一节中,您将学习如何监控您的内存使用。
步骤4:如何监控您的内存使用
您可以通过使用免费
命令检查系统的当前内存使用量。
当没有选项使用时,输出看起来像这样:
1free
1[secondary_label Output]
2 total used free shared buff/cache available
3Mem: 1004896 390988 123484 3124 490424 313744
4Swap: 0 0 0
要在更易于阅读的格式中显示,您可以通过-m
选项以显示以 Megabyte 的输出:
1free -m
1[secondary_label Output]
2 total used free shared buff/cache available
3Mem: 981 382 120 3 478 306
4Swap: 0 0 0
Mem
行包括用于缓存和缓存的内存,该内存在其他用途所需时立即释放。
最后,vmstat
命令可以输出有关您的系统的各种信息,包括内存、交换、磁盘 io 和 CPU 信息。
您可以使用该命令来获取记忆使用的另一个视图:
1vmstat
1[secondary_label Output]
2procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
3 r b swpd free buff cache si so bi bo in cs us sy id wa
4 1 0 0 99340 123712 248296 0 0 0 1 9 3 0 0 100 0
您可以通过指定与-S
旗帜的单位来看到这一点:
1vmstat -S M
1[secondary_label Output]
2procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
3 r b swpd free buff cache si so bi bo in cs us sy id wa
4 1 0 0 96 120 242 0 0 0 1 9 3 0 0 100 0
若要获取有关内存使用的一些一般统计数据,请键入:
1vmstat -s -S M
1[secondary_label Output]
2 495 M total memory
3 398 M used memory
4 252 M active memory
5 119 M inactive memory
6 96 M free memory
7 120 M buffer memory
8 242 M swap cache
9 0 M total swap
10 0 M used swap
11 0 M free swap
12. . .
若要获取有关个别系统流程的缓存使用的信息,请键入:
1vmstat -m -S M
1[secondary_label Output]
2Cache Num Total Size Pages
3ext4_groupinfo_4k 195 195 104 39
4UDPLITEv6 0 0 768 10
5UDPv6 10 10 768 10
6tw_sock_TCPv6 0 0 256 16
7TCPv6 11 11 1408 11
8kcopyd_job 0 0 2344 13
9dm_uevent 0 0 2464 13
10bsg_cmd 0 0 288 14
11. . .
这将为您提供有关缓存中存储的信息的详细信息。
结论
使用这些工具,您应该开始能够从命令行监控您的服务器. 有许多其他监控工具用于不同的目的,但这些都是一个很好的起点。
接下来,您可能想了解使用 ps, kill, and nice的Linux流程管理。