一、ps语法
格式:ps [选项]
常用选项:
-a 显示所有进程(不包括没有终端的进程)
-x 显示没有终端的进程
-u 显示进程的所有拥有者
-e 显示所有进程everyone(不显示进程状态)
-l 按长格式显示进程清单
-r 只显示正在运行中的进程
-f 显示进程之间的父/子关系
-w 显示进程的命令行参数(最多半行)
二、 ps aux参数详解
[root@iZwz9bhan5nqzh979qokrkZ ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 51564 3044 ? Ss May26 0:41 /usr/lib/systemd/systemd
root 2 0.0 0.0 0 0 ? S May26 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S May26 0:03 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< May26 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S May26 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S May26 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? R May26 0:27 [rcu_sched]
root 10 0.0 0.0 0 0 ? S May26 0:01 [watchdog/0]
root 12 0.0 0.0 0 0 ? S May26 0:00 [kdevtmpfs]
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程拥有者
PID: pid
%CPU: 占用的CPU使用率
%MEM: 占用的内存使用率
VSZ: 表示如果一个程序完全驻留在内存的话需要占用多少内存空间;
RSS: 指明了当前实际占用了多少内存
TTY: 该进程当前控制终端的ID
STAT: 显示了进程当前的状态
R running 运行状态 正在进行的CPU的处理
S sleep 睡眠状态 暂时没有正在运行,在后台挂着
Z zombie僵尸状态 僵死状态 (留下来的是否正常结束的反馈) echo ¥? 0是有僵死进程 1代表没有
T stopped 暂停状态 挂起状态 不会占用CPU
D 不可中断睡眠
x 死掉的进程
Ss s进程的领导者,父进程
S< 优先级较高的程序
SN 优先级较低的程序
R+ 前台的进程组
Sl 以线程的方式运行
START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令
注:重点关注VSZ、RSS
扩展:计算所有进程占用的内存大小?
思路:计算所有进程占用的大小主要就是统计所有进程的RSS大小
[root@iZwz9bhan5nqzh979qokrkZ ~]# ps aux | awk '{mem += $6} END {print mem/1024/1024}'
0.674767
三、top参数详解
[root@iZwz9bhan5nqzh979qokrkZ ~]# top
top - 14:48:41 up 4 days, 2:13, 1 user, load average: 0.00, 0.02, 0.05
Tasks: 119 total, 1 running, 118 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1016164 total, 218744 free, 452296 used, 345124 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 406856 avail Mem
第一行:
14:48:41: 表示当前时间
up 4 days, 2:13:表示系统启动时间
1 user当前系统登录用户数目
load average: 0.00, 0.02, 0.05:平均负载(1分钟,10分钟,15分钟)
注:平均负载(load average),一般对于单个cpu来说,负载在0~1.00之间是正常的,超过1.00须引起注意。在多核cpu中,系统平均负载不应该高于cpu核心的总数。
第二行:
119 total:进程总数
1 running:运行进程数
118 sleeping:休眠进程数
0 stopped:终止进程数
0 zombie:僵尸进程数
第三行:
0.0 us %us 用户空间占用cpu百分比;
0.3 sy %sy 内核空间占用cpu百分比;
0.0 ni %ni 用户进程空间内改变过优先级的进程占用cpu百分比;
99.7 id %id 空闲cpu百分比,反映一个系统cpu的闲忙程度。越大越空闲; id:idle
0.0%wa %wa 等待输入输出(I/O)的cpu百分比;wa:wait
0.0%hi %hi 指的是cpu处理硬件中断的时间; hi:hardware
0.1%si %si 值的是cpu处理软件中断的时间; si:software
0.0%st %st 用于有虚拟cpu的情况,用来指示被虚拟机偷掉的cpu时间。
第四行:
1016164 total total:总的物理内存;
452296 used used:使用物理内存大小;
218744 free free:空闲物理内存;
345124 buff/cache buffers:用于内核缓存的内存大小
第五行:不解释了,相信大家都知道了!
扩展:Linux实际内存使用情况计算
从应用程序的角度来说,可用内存=系统free memory+buffers+cached
注:buffers与cached区别:buffers指的是块设备的读写缓冲区,cached指的是文件系统本身的页面缓存。他们都是Linux系统底层的机制,为了加速对磁盘的访问。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
24469 zabbix 20 0 220260 2944 1584 S 0.3 0.3 0:22.17 zabbix_server
25929 mysql 20 0 1197076 191768 5476 S 0.3 18.9 11:58.38 mysqld
1 root 20 0 51564 3044 1860 S 0.0 0.3 0:41.65 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:03.71 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:27.39 rcu_sched
top 运行中可以通过 top 的内部命令对进程的显示方式进行控制。内部命令如下:
s – 改变画面更新频率
l – 关闭或开启第一部分第一行 top 信息的表示
t – 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示
m – 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示
N – 以 PID 的大小的顺序排列表示进程列表
P – 以 CPU 占用率大小的顺序排列进程列表
M – 以内存占用率大小的顺序排列进程列表
h – 显示帮助
n – 设置在进程列表所显示进程的数量
q – 退出 top
s – 改变画面更新周期
各个参数的意义
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
PID 进程id
PPID 父进程id
USER 进程所有者的用户名
TTY 启动进程的终端名。不是从终端启动的进程则显示为?
PR 优先级
NInice 值。负值表示高优先级,正值表示低优先级
%CPU 上次更新到现在的CPU时间占用百分比
TIME 进程使用的CPU时间总计,单位秒
TIME+ 进程使用的CPU时间总计,单位1/100秒
%MEM 进程使用的物理内存百分比
VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
SWAP 进程使用的虚拟内存中,被换出的大小,单位kb。
RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
CODE 可执行代码占用的物理内存大小,单位kb
DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
SHR 共享内存大小,单位kb
nFLT 页面错误次数
nDRT 最后一次写入到现在,被修改过的页面数常用选项:
四、STAT进程状态
R running 运行状态 正在进行的CPU的处理
S sleep 睡眠状态 暂时没有正在运行,在后台挂着
Z zombie僵尸状态 僵死状态 (留下来的是否正常结束的反馈) echo ¥? 0是有僵死进程 1代表没有
T stopped 暂停状态 挂起状态 不会占用CPU
D 不可中断睡眠
x 死掉的进程
Ss s进程的领导者,父进程
S< 优先级较高的程序
SN 优先级较低的程序
R+ 前台的进程组
Sl 以线程的方式运行