ps -l
[root@i-ka ~]#ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 17236 17233 0 80 0 - 28946 wait pts/0 00:00:00 bash
0 R 0 17274 17236 0 80 0 - 37233 - pts/0 00:00:00 ps
每个项目的意义简单说明如下:
- F (flag):代表程序的总结旗标,常见为4 代表root
- S (stat):状态列,主要的分类项目有:
R (Running):该程式正在运作中;
S (Sleep):该程式目前正在睡眠状态(idle),但可以被唤醒(signal)。
D :不可被唤醒的睡眠状态,通常这支程式可能在等待I/O 的情况(ex>列印)
T :停止状态(stop),可能是在工作控制(背景暂停)或除错(traced) 状态;
Z (Zombie):僵尸状态,程序已经终止但却无法被移除至记忆体外。 - UID/PID/PPID:代表『此程序被该UID 所拥有/程序的PID 号码/此程序的父程序PID 号码』
- C:代表CPU 使用率,单位为百分比;
- PRI/NI:Priority/Nice 的缩写,代表此程序被CPU 所执行的优先顺序,数值越小代表该程序越快被CPU 执行。
- ADDR/SZ/WCHAN:都与记忆体有关,ADDR 是kernel function,指出该程序在记忆体的哪个部分,如果是个running 的程序,一般就会显示『 - 』 / SZ 代表此程序用掉多少记忆体/ WCHAN 表示目前程序是否运作中,同样的, 若为- 表示正在运作中。
- TTY:登入者的终端机位置,若为远端登入则使用动态终端介面(pts/n);
- TIME:使用掉的CPU 时间,注意,是此程序实际花费CPU 运作的时间,而不是系统时间;
- CMD:就是command 的缩写,造成此程序的触发程式之指令为何。
pstree
程序关联树即pstree,为了显示的方便,建议-A 的选项, 以ASCII 的显示字元输出,比较不容易出现乱码:
[root@i-ka ~]# pstree -A
systemd-+-NetworkManager-+-dhclient
| `-2*[{NetworkManager}]
|-2*[agetty]
|-auditd---{auditd}
|-chronyd
|-crond
|-dbus-daemon
|-dsp.jar---java---82*[{java}]
|-gapd---{gapd}
|-irqbalance
|-nginx---2*[nginx]
|-oms-server.jar---java---99*[{java}]
-----省略-------
`-tuned---4*[{tuned}]
若需要加上PID 与使用者资料, 可以直接使用-up 来加入即可。
[root@i-ka ~]# pstree -Aup
systemd(1)-+-NetworkManager(445)-+-dhclient(706)
| |-{NetworkManager}(455)
| `-{NetworkManager}(457)
|-agetty(625)
|-agetty(644)
|-dbus-daemon(429,dbus)
|-dgp-server.jar(2615,bootapp)---java(2663)-+-{java}(2664)
| |-{java}(2666)
-------底下省略-------
ps aux
[root@i-ka ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 125196 2640 ? Ss 2019 23:56 /usr/lib/systemd/sy
root 2 0.0 0.0 0 0 ? S 2019 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 2019 0:38 [ksoftirqd/0]
nginx 898 0.0 0.0 55636 640 ? S 2019 0:01 nginx: worker proce
redis 1012 0.0 0.0 142904 1068 ? Ssl 2019 48:14 /usr/bin/redis-serv
每一个项目代表的意义简易说明如下:
- USER:该process 属于那个使用者帐号的
- PID :该process 的程序识别码。
- %CPU:该process 使用掉的CPU 资源百分比;
- %MEM:该process 所占用的实体记忆体百分比;
- VSZ :该process 使用掉的虚拟记忆体量(Kbytes)
- RSS :该process 占用的固定的记忆体量(Kbytes)
- TTY :该process 是在那个终端机上面运作,若与终端机无关则显示?,另外, tty1-tty6 是本机上面的登入者程序,若为pts/0 等等的,则表示为由网路连接进主机的程序。
- STAT:该程序目前的状态,状态显示与ps -l 的S 旗标相同(R/S/T/Z)
- START:该process 被触发启动的时间;
- TIME :该process 实际使用CPU 运作的时间。
- COMMAND:该程序的实际指令
top 动态观察程序
top 可以协助读者未来在管理程序的CPU 使用量上面的一个很重要的工具。直接输入top 即可每5 秒钟更新一次程序的现况,如下所示:
top 程式执行的状态列,每个项目的意义为:
- PID :每个process 的识别码(PID)
- USER:该process 所属的使用者;
- PR :Priority 的简写,程序的优先执行顺序,越小越早被执行;
- NI :Nice 的简写,与Priority 有关,也是越小越早被执行;
- %CPU:CPU 的使用率;
- %MEM:记忆体的使用率;
- TIME+:CPU 使用时间的累加;
- COMMAND:指令
在预设的情况下,top 所显示的程序会以CPU 的使用率来排序,这也是管理员最需要的一个观察任务。许多时候系统发生资源不足或者是效能变差的时候, 最简易的方法为使用top 观察最忙碌的几只程序,借以处理程序的效能问题。此外,也能透过top 观察I/O wait 的CPU 使用率, 可以找到I/O 最频繁的几只程序,借以了解到哪些程序在进行哪些行为,或者是系统效能的瓶颈,借以作为未来升级硬体的依据。
top - 10:22:33 up 34 days, 18:16, 1 user, load average: 6.41, 5.25, 4.66
代表目前为10:22:33 ,本系统开机了34 天又18:16 这的久的时间,目前有1 用户登入,工作负载为6.41, 5.25, 4.66 。那三个数据代表1, 5, 15 分钟内的平均工作负载。所谓的工作负载为『单一时间内,CPU 需要运作几个工作』之意,并非CPU 使用率。
Tasks: 92 total, 1 running, 91 sleeping, 0 stopped, 0 zombie
目前共有92个程序,其中1 个在执行,91个睡着了,没有停止与僵尸程序。
%Cpu(s): 27.6 us, 5.5 sy, 0.0 ni, 66.8 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st
这里才是CPU 的使用率百分比,比较需要注意id (idle) 与wa (I/O wait),id 越高代表系统越闲置, wa 越高代表程序卡在读写磁碟或网路上,此时系统效能会比较糟糕。
来源:CSDN
作者:weixin_43572702
链接:https://blog.csdn.net/weixin_43572702/article/details/103799434