Linux运维基础之top命令详解

Linux运维基础之top命令详解

top 命令提供运行系统的动态实时视图。它用于监控系统进程和资源使用情况,如 CPU、内存和交换使用情况。

top 命令的一般语法:

$ top [OPTIONS]

1. 列出所有正在运行的进程

top

使用 top 命令显示正在运行的任务、内存、cpu 和 swap。要关闭窗口,请按 Q

示例:

在不带任何选项的终端中运行 top 命令,可能会得到以下结果。

top - 15:20:26 up 10 days,  2:30,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 193 total,   1 running, 192 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.7 us,  0.2 sy,  0.0 ni, 98.9 id,  0.1 wa,  0.0 hi,  0.1 si,  0.0 st
KiB Mem :  8167848 total,  2003084 free,  1652232 used,  4512532 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  6171720 avail Mem 
PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND            
1219 root      20   0  658884  56644  35980 S   6.7  0.7  42:11.77 Xorg               
2781 user1     20   0  883780  31576  21744 S   6.7  0.4   0:01.01 gnome-terminal-    
1 root      20   0  225636   9484   6812 S   0.0  0.1   0:07.31 systemd            
2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd           
4 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H       
6 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 mm_percpu_wq       
7 root      20   0       0      0      0 S   0.0  0.0   0:00.31 ksoftirqd/0        
8 root      20   0       0      0      0 I   0.0  0.0   0:02.91 rcu_sched          

第一行提供系统摘要:当前时间、正常运行时间、用户数量和平均负载。

第二行显示任务总数及其状态:运行、休眠、停止或僵尸。

第三行显示 CPU 使用详情:用户进程、系统进程、空闲进程等。

第四行和第五行显示内存使用情况:总内存、空闲内存、已用内存和缓冲/缓存内存。其余各行列出系统上运行的所有进程。每一行代表一个进程,详细内容包括 PIDUSERCPU usageMemory usage, 以及启动该进程所使用的命令。

2. 显示特定用户的进程

top -u [user]

使用 -u 选项可以显示特定用户的所有运行进程信息。

示例:

显示 root 用户的运行进程。

top - 12:34:56 up 10 days,  2:30,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 100 total,   1 running,  99 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.1 sy,  0.0 ni, 99.5 id,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st
MiB Mem :   7976.1 total,   1694.7 free,   1263.5 used,   5017.8 buff/cache
MiB Swap:   1024.0 total,   1024.0 free,      0.0 used.   6412.1 avail Mem 
PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
1 root      20   0  225492   9484   6812 S   0.0   0.1   0:06.37 systemd
2 root      20   0       0      0      0 S   0.0   0.0   0:00.01 kthreadd
3 root      20   0       0      0      0 S   0.0   0.0   0:00.36 ksoftirqd/0
5 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H
7 root      20   0       0      0      0 I   0.0   0.0   0:01.31 rcu_sched
...

在这个例子中,你可以看到 top -u root 命令只显示 root 用户拥有的进程。输出包括每个进程的相关信息,如进程 ID (PID)、优先级 (PR)、友好值 (NI)、虚拟内存大小 (VIRT)、常驻内存大小 (RES)、共享内存大小 (SHR)、CPU 使用率 (%CPU)、内存使用率 (%MEM) 以及启动进程的命令 (COMMAND)。

3. 启用批处理模式

top -b

top -b 命令用于以批处理模式运行 top。当你想将 top 的输出重定向到文件或其他命令时,这条命令特别有用。在批处理模式下,top 不接受输入,一直运行到设定的迭代次数限制,或直到被杀死。

示例:

在本例中,-n 1 会让 top 只运行一次,而不是持续更新。输出会被重定向到 top-output.txt 中。

打开 top-output.txt 文件,可能会看到类似下面的输出:

top - 18:25:01 up 10 days,  5:45,  1 user,  load average: 0.00, 0.01, 0.05
Tasks: 162 total,   1 running, 161 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.7 us,  0.3 sy,  0.0 ni, 98.9 id,  0.1 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  8167848 total,  1785084 free,  1583456 used,  4799308 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.  6250480 avail Mem 
PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
1 root      20   0  225492   9484   6812 S   0.0  0.1   0:09.07 systemd
2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd
3 root      20   0       0      0      0 S   0.0  0.0   0:00.55 ksoftirqd/0
5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
7 root      20   0       0      0      0 S   0.0  0.0   0:07.28 rcu_sched

4. 从同一状态开始

top -c

top -c 显示当前活动进程以及其他信息,包括启动每个进程所用的完整命令行。这有助于查看传递给进程的确切参数。

示例:

下面是 top -c 命令的输出示例:

top - 12:34:56 up 10 days,  2:03,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 100 total,   1 running,  99 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.1 sy,  0.0 ni, 99.6 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  2040204 total,   987204 free,   105204 used,   948796 buff/cache
KiB Swap:  1048572 total,  1048572 free,        0 used.  1830204 avail Mem 
PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
1 root      20   0  159444   6604   3904 S   0.0  0.3   0:06.35 /sbin/init splash
2 root      20   0       0      0      0 S   0.0  0.0   0:00.02 [kthreadd]
3 root      20   0       0      0      0 S   0.0  0.0   0:00.85 [ksoftirqd/0]
5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 [kworker/0:0H]
7 root      20   0       0      0      0 S   0.0  0.0   0:03.78 [rcu_sched]
123 root      20   0  278532  37888  26976 S   0.0  1.9   0:03.45 /usr/bin/dockerd -H fd://
456 www-data  20   0  161916   6412   2680 S   0.0  0.3   0:00.01 /usr/sbin/apache2 -k start

前几行提供系统摘要,包括当前时间、系统运行时间、用户数量、平均负载和内存使用情况。

之后的每一行代表一个进程,并包含每个进程的各种信息。其中包括进程 ID (PID)、拥有该进程的用户、优先级 (PR) 和 nice 值 (NI)、内存使用情况 (VIRT、RES、SHR)、当前状态 (S)、CPU 使用率 (%CPU)、内存使用情况 (%MEM)、进程运行时间 (TIME+) 以及完整的命令行 (COMMAND)。

-c 选项显示启动每个进程的完整命令行。例如,对于 PID 1,命令是 /sbin/init splash。对于 PID 123,命令是 /usr/bin/dockerd -H fd://。这有助于查看传递给进程的确切参数。

5. 启用安全模式

top -s

-s 选项用于安全模式操作。在安全模式下,一些可能有害的交互式命令会被禁用。当系统管理员在需要限制用户操作的环境中运行 top 时,这个选项尤其有用。举例说明:

示例:

下面举例说明在这种情况下如何使用 -s 选项:

top -s 5

这条命令将启动 top 并每 0.5 秒刷新一次显示。

6. 设置屏幕更新的延迟时间

top -d [seconds]

-d 选项用于指定屏幕更新之间的延迟时间,换句话说就是刷新率。默认情况下,top 每 3.0 秒更新一次,但使用 -d 选项,可以将其设置为任何需要的间隔。

示例:

-d 选项后指定数字 20 ,每 20 秒更新一次输出。

top -d 20

7. 设置迭代次数

top -n [number]

top -n 会更新 top 命令显示 n 次,然后退出。如果你想定期对系统进行快速快照,这将非常有用。

更多 Linux 命令

下面罗列了最常见的一些 Linux 命令,您可以根据自己的需要查阅对应命令的详细解析:

目录操作 rmdir · cd · pwd · exa · ls
文件操作 cat · cp · dd · less · touch · ln · rename · more · head
文件系统操作 chown · mkfs · locate
网络 ping · curl · wget · iptables · mtr
搜索和文本处理 find · grep · sed · whatis · ripgrep · fd · tldr
系统信息和管理 env · history · top · who · htop · glances · lsof
用户和会话管理 screen · su · sudo · open

此外,我们还整理 Linux 命令行大全,以帮助大家全面深入地学习 Linux。

评论留言