1 ps
1.1 ps -ef
有哪些字段
ps -ef 命令在Unix/Linux系统中用于显示当前运行的进程。输出的字段通常包括:
- UID:启动进程的用户ID。
- PID:进程ID。
- PPID:父进程ID。
- C:CPU利用率。
- STIME:进程启动时间。
- TTY:进程终端类型。
- TIME:进程占用CPU的时间。
- CMD:启动进程的命令。
1.2 ps
与 ps -ef
的区别
ps
:这个命令不带任何参数时,默认显示与当前终端会话相关联的进程。ps -ef
:这个命令显示系统中所有运行的进程,其中:-e
选项表示显示所有进程。-f
选项提供完整的详细输出,包括进程的UID、PID、PPID、启动时间等。
2 top命令
top
命令是一个非常流行的 Linux 工具,用于实时显示系统中进程的动态运行信息。它提供了一个实时更新的视图,显示哪些进程正在占用最多的系统资源,包括 CPU 和内存。这里是 top
命令的一些关键特性和输出字段的详细解释:
2.1 主要特性
-
实时监控:
top
命令提供了一个实时更新的视图,显示系统的当前状态,包括正在运行的进程和它们的资源占用。 -
排序和查找:可以根据CPU、内存等不同的资源消耗对进程进行排序,也可以搜索特定的进程。
-
交互式控制:用户可以在
top
运行时交互式地执行命令,例如更改排序顺序、杀死进程等。
2.2 输出字段解释
top
命令的输出通常分为两部分:系统概览和进程列表。
2.2.1 系统概览
- load average:显示了过去1分钟、5分钟和15分钟的平均负载。
- Tasks:当前的进程总数,以及它们的状态(运行、休眠、停止、僵尸)。
- %Cpu(s):CPU的使用情况,包括用户空间占比、系统空间占比、空闲比例等。
- KiB Mem 和 KiB Swap:内存和交换空间的使用情况。
2.2.2 进程列表
- PID:进程ID。
- USER:运行进程的用户。
- PR:进程的优先级。
- NI:进程的nice值,影响进程的优先级。
- VIRT:进程占用的虚拟内存总量。
- RES:进程占用的物理内存量。
- SHR:进程共享的内存量。
- S:进程状态(如睡眠(S)、运行(R)、停止(T)等)。
- %CPU:进程占用的CPU百分比。
- %MEM:进程占用的物理内存百分比。
- TIME+:进程占用CPU的总时间。
- COMMAND:启动进程的命令。
2.2.3 交互命令
在 top
运行时,用户可以使用不同的键盘命令进行交互:
h
或?
:显示帮助。k
:杀死一个进程。f
:选择要显示的字段。r
:重新设定一个进程的nice值。P
:按CPU使用率排序。M
:按内存使用量排序。
2.3 top命令和ps -ef命令的区别
top
命令和 ps -ef
命令都用于查看运行在Linux系统上的进程,但它们之间有一些关键的区别:
2.3.1 top命令
-
动态实时更新:
top
提供一个动态的实时视图,它会定期刷新(默认情况下每几秒刷新一次),显示当前的进程和它们对系统资源(如CPU和内存)的实时使用情况。
-
交互性:
top
是交互式的;用户可以在其运行时执行不同的命令,比如改变排序顺序、杀死进程等。
-
系统资源使用概览:
top
显示系统概览信息,如CPU使用率、内存使用量、负载平均值等。
2.3.2 ps -ef命令
-
静态快照:
ps -ef
提供的是在命令执行时刻的进程快照。它不会实时更新;要查看最新信息,需要重新运行命令。
-
非交互性:
ps -ef
是非交互式的,它只打印出执行时刻的进程信息,并且无法在命令运行时进行操作。
-
详细进程信息:
ps -ef
提供了每个进程的详细信息,包括PID、所属用户、父进程ID、启动时间、命令等。
2.3.3 使用场景
-
使用
top
时,通常是为了监控系统的实时性能和查看哪些进程正在使用最多资源。它适用于系统监控和动态问题诊断。 -
使用
ps -ef
时,适用于需要获取系统在某一时刻的进程快照,或者当需要了解特定进程的信息时。
总之,top
更适合于实时监控和交互操作,而 ps -ef
更适合于获取一次性的详细进程信息。两者都是系统管理员和用户诊断系统状态和性能问题时的重要工具。
3 vmstat
3.1 vmstat 字段详解
vmstat
(虚拟内存统计)命令提供了关于系统的虚拟内存、物理内存、系统调用、I/O、CPU活动等方面的信息。常见字段包括:
-
procs(进程):
r
:等待运行的进程数。b
:处于不可中断睡眠状态的进程数。
-
memory(内存):
swpd
:使用虚拟内存的大小。free
:空闲的物理内存大小。buff
:用作缓冲区的内存大小。cache
:用作缓存的内存大小。
-
swap(交换):
si
:每秒从磁盘交换到内存的大小。so
:每秒从内存交换到磁盘的大小。
-
io(输入/输出):
bi
:每秒从块设备读取的块数。bo
:每秒向块设备写入的块数。
-
system(系统):
in
:每秒中断数,包括时钟中断。cs
:每秒上下文切换数。
-
cpu(CPU):
us
:用户空间占用CPU的百分比。sy
:内核空间占用CPU的百分比。id
:空闲CPU百分比。wa
:等待I/O的CPU时间百分比。st
:被虚拟机偷取的CPU时间百分比(在虚拟化环境中)。