linux ps 显示进程状态 & top 进程动态状态

pidof firefox // 快速查找进程号
pstree(后面可以直接跟进程号) / ps -ejH / ps axjf 查看进程树
只要是父进程没有对信号的处理的话,子进程是不会死的。使用Kill -9 来杀死父进程的话子进程不会死,-9 是不通知进程强行杀死进程(KILL 信号)。
通过负数的进程组(每个命名管道创建一个进程组) id 来杀死子进程:http://morningcoffee.io/killing-a-process-and-all-of-its-descendants.html

Linux中的 ps 命令是Process Status的缩写是静态快照


动态用top命令(需要理解linux系统用户空间和内核空间的相关知识
top -b -n 1 // 显示一次,类似ps -ef, 后面加grep 命令查找 pid, 再用top -p 监视。
-H 线程模式; // tid 显示成了pid
-p 指定进程号
-c 显示 完整命令

第 四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见 得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越 来越少,但不用为此担心。

如果出于习惯去计算可用内存数,这里有个近似的计算公式:第四行的free + 第四行的buffers + 第五行的cached(内核控制没有使用)

对于内存监控,在top里我们要时刻监控第五行swap交换分区的used如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。

第七行以下:各进程(任务)的状态监控,项目列信息说明如下:

PID — 进程id

PGID - 进程组id

USER — 进程所有者

PR — 进程优先级

NI — nice值。负值表示高优先级,正值表示低优先级

VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

SHR — 共享内存大小,单位kb

S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程

%CPU — 上次更新到现在的CPU时间占用百分比(2 核最大就是 200%)

%MEM — 进程使用的物理内存百分比

TIME+ — 进程使用的CPU时间总计,单位1/100秒

COMMAND — 进程名称(命令名/命令行)

"x"(打开/关闭排序列的加亮效果)b"(打开/关闭加亮效果)通过' >'或'<'
? 帮助
f 开关列

ps 命令中的列:LWP(线程ID)和NLWP(线程的个数)
ppid 父进程 pid
ps标记进程的状态:
  • D 不可中断 uninterruptible sleep (usually IO)
  • R 运行 runnable (on run queue)
  • S 中断 sleeping
  • T 停止 traced or stopped
  • Z 僵死 a defunct ("zombie") process
a 显示所有进程, all w/ tty, including other users

-a 显示同一终端下的所有程序, all w/ tty except session leaders

-A 显示所有进程,等于a

c 显示进程的真实名称

-N 反向选择

-e 等于"-A"

e 显示环境变量

w 使用132列显示信息,多次使用适配窗口宽度

f 显示程序间的关系(启动命令)

-H 显示树状结构

r 显示当前终端的进程

T 显示当前终端的所有程序

-u 指定用户的所有进程

-au 显示较详细的资讯

-aux 显示所有包含其他使用者的行程

-x 显示进程状态

-C<命令> 列出指定命令的状况

--lines<行数> 每页显示的行数

--width<字符数> 每页显示的字符数

--help 显示帮助信息

--version 显示版本显示