使用ps命令可以查看系统上的进程信息,但也有不足之处,他只能显示某个特定时间点的信息。如果想观察频繁换进换出的内存进程趋势,用ps就不太方便了,此时用top可以看到系统的进程信息,并且时实时显示输出的,如下所示:
top - 13:48:59 up 35 days, 21:47, 2 users, load average: 0.39, 0.55, 0.56 Tasks: 1014 total, 1 running, 1009 sleeping, 0 stopped, 4 zombie %Cpu(s): 1.2 us, 3.1 sy, 0.0 ni, 95.5 id, 0.2 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 45153472 total, 214996 free, 7103420 used, 37835056 buff/cache KiB Swap: 10239996 total, 5630148 free, 4609848 used. 18407424 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 15616 lixin 20 0 698040 47152 28560 S 4.3 0.1 0:22.12 php-fpm 7258 root 0 -20 0 0 0 S 1.0 0.0 602:07.25 vmware-rtc 1375 root 20 0 4522412 53400 7200 S 0.3 0.1 191:00.48 dockerd 3283 systemd+ 39 19 197076 18180 2988 S 0.7 0.0 46:02.88 python 10 root 20 0 0 0 0 S 0.3 0.0 119:49.20 rcu_sched 1515 root 20 0 22064 6804 2840 S 0.3 0.0 106:14.93 docker-gen 2663 root 20 0 2176492 13132 3048 S 0.3 0.0 62:25.00 docker-containe
第一行显示了当前时间、系统的运行时间、登陆用户数以及系统的平均负载。 平均负载有三个值:最近1分钟、最近5分钟、最近15分钟,值越大负载越高,多核CPU中平均负载不应高于CPU总核心数。
第二行显示进程概要信息,top命令的输出中将进程叫做任务(task),此处分别显示进程为:运行进程数、休眠进程数、停止进程数、僵化进程数(进程完成了,但是父进程没有响应)。
第三行显示CPU的概要信息。top根据进程的属主(用户还是系统)和进程的状态(运行、空闲、等待)将CPU利用率分成几类输出
%us用户空间占用cpu百分比; %sy内核空间占用cpu百分比; %ni用户进程空间内改变过优先级的进程占用cpu百分比; %id空闲cpu百分比,反映一个系统cpu的闲忙程度。越大越空闲; %wa等待输入输出(I/O)的cpu百分比; %hi指的是cpu处理硬件中断的时间; %si值的是cpu处理软件中断的时间; %st用于有虚拟cpu的情况,用来指示被虚拟机偷掉的cpu时间。 %us: 用户进程空间占用CPU百分比; %sy: 内核进程空间占用CPU百分比; %ni: 用户进程空间内改变过优先级的进程占用CPU百分比; %id: 空闲CPU百分比,值越大越空闲; %wa: 等待输入输出(I/O)的CPU百分比; %hi: 指的是CPU处理硬件中断的时间; %si: 指的时CPU处理软件中断的时间; %st: 用于有虚拟CPU的情况,被物理机中的实例偷走的CPU占用百分比。
第四行是系统的物理内存使用情况,分别为:总内存数、当前使用内存数、空闲内存数、用于缓存空间的内存数
第五行是针对交换分区(Swap),和物理内存一样也是分为总的、已用的等等。
最后一行显示当前运行中的进程详细列表,有些和ps命令的输出类似:
PID: 进程的ID号 USER: 进程属主的名字 PR: 进程的优先级 NI: 进程的谦让度值 VIRT: 进程占用的虚拟内存总量 RES: 进程占用的物理内存总量 SHR: 进程和其他进程共享的内存总量 S: 进程的状态 D: 代表可中断的休眠状态 R: 代表在运行状态 S: 代表休眠状态 T: 代表跟踪状态或停止状态 Z: 代表僵化状态 %CPU: 进程使用的CPU时间比例 %MEM: 进程使用的内存占可用内存的比例 TIME+: 自进程启动到目前为止的CPU时间总量 COMMAND: 进程所对应的命令行名称,也就是启动的程序名
默认情况下,top命令在启动时会按照%CPU值对进程进行排序。top运行时可以按“ f ”改变排序规则。