>进程的概念
>程序的概念
程序是为了完成某个特定的任务,而用某种语言编写的一组指令的集合
>进程和程序的区别
ps 命令能够给出当前系统中进程的快照,它能捕获系统在某一时间的进程状态。因此
ps 命令显示的是瞬间进程状态,并不动态连续。
>使用方法
- ps 命令的基本格式:ps [选项]
- 常用选项如下: (unix风格)
- • -A:显示所有进程(同-e)
- • -a:显示当前终端的所有进程
- • -u:显示进程的用户信息
- • -o:以用户自定义形式显示进程信息
- • -f:显示程序间的关系
- • -x:显示所有进程,不以终端机来区分






>ps 命令输出字段解析
常见字段的基本含义如下:
- • USER:进程所有者的用户名
- • PID:进程 ID(Process ID)
- • START:进程激活时间
- • %CPU:进程的 cpu 占用率
- • %MEM:进程使用内存的百分比•
- • VSZ:进程使用的虚拟内存大小,以 K 为单位
- • RSS:驻留空间的大小。显示当前常驻内存的程序的 K 字节数。
- • TTY:与进程关联的终端(tty)
- • STAT:进程状态,包括以下的状态。
-
- D 不可中断
- R 正在运行,或在队列中的进程
- S 处于休眠状态
- T 停止或被追踪
- Z 僵尸进程
- X 死掉的进程
- < 高优先级
- N 低优先级
- I 多线程的
- s 进程的领导者(在它之下包含子进程)
- + 运行在前台
- L 进程有些页被锁进内存
-
- • TIME:进程使用的总 CPU 时间
- • COMMAND:被执行的命令行
- • NI:进程的优先级值,较小的数字意味着占用较少的 CPU 时间
- • PRI:进程优先级。
- • PPID: 父进程 ID
- • WCHAN:进程等待的内核事件名

>常用组合
- ps -ef 显示所有的进程和命令行
- ps -ef | grep http 查看”http”相关进程
- ps -aux 列出目前所有的正在内存当中的程序
- ps -aux | more 可以用 | 管道和 more 连接起来分页查看
- ps -aux > ps001.txt 把所有进程显示出来,并输出到 ps001.txt 文件
- ps -u root 显示指定用户信息
- ps -axjf 类似程序树的程序
显示








在 Linux 操作系统中,top 是使用最频繁,也是信息比较全的一个命令。它对于所有正在运行的进行系统负荷提供不断更新的概览信息,包括系统负载、CPU 利用分布情况、内存使用、每个进程的资源占用情况等信息。
>使用方法
top 命令的基本格式:top [选项]
选项如下:
- -d 秒数: 指定 top 命令每隔几秒更新。默认是 3 秒;
- -b: 使用批处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到文件中;
- 例如 top -n 2 -b > top.log,将更新显示二次的结果输入到 top.log 档案里。
- -n 次数: 指定 top 命令执行的次数,然后退出。可以和"-b"选项合用;
- -p 进程 PID: 仅监视指定 ID 的进程;
- -s: 使 top 命令在安全模式中运行,避免在交互模式中出现错误;
- -u 用户名: 只监听某个用户的进程;
- 举例:top -u root,查看 root 用户创建的所有进程。






举例 2:
- top 每隔 3 秒显式所有进程的资源占用情况
- top -d 1 每隔 1 秒显式所有进程的资源占用情况top -c
- top -c 每隔 3 秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)
- top -p 24 -p 25 每隔 3 秒显示 pid 是 28820 和 pid 是 38830 的两个进程的资源占用情况。
- top -d 2 -c -p 24 每隔 2 秒显示 pid 是 69358 的进程的资源使用情况,并显式该进程启动的命令行参数。
-
- 在 top 命令的显示窗口中,可以使用如下按键,进行交互操作:
- • ? 或 h:显示交互模式的帮助;
- • P:按照 CPU 的使用率排序,默认就是此选项;
- • M:按照内存的使用率排序;
- • N:按照 PID 排序;
- • T:按照 CPU 的累积运算时间排序,也就是按照 TIME+ 项排序;
- • k:按照 PID 给予某个进程一个信号。一般用于中止某个进程;
- • r:按照 PID 给某个进程重设优先级(Nice)值;
- • q:退出 top 命令;





>top 命令输出结果解析
top 命令输出很多参数,真正的机器负载情况要综合其他参数一起看。top 输出结果分为两部分:第一部分是为系统整体的统计信息;第二部分是第 8 行开始的进程信息。

(1)系统整体信息。
第一行:
- • top:当前时间
- • up:机器运行了多长时间
- • users:当前登录用户数
- • load average:系统负载,即任务队列的平均长度。三个数值分别为 1 分钟、5 分钟、15 分钟前到现在的平均值。
- 注意:一个 CPU 在一个时间片里面只能运行一个进程,CPU 核数的多少直接影响到这
- 台机器同时间能运行的进程数。一般来说 Load Average 的数值不超过这台机器的总核
- 数,就基本没有问题。
第二行:
- • Tasks:当前有多少进程
- • running:正在运行的进程数,值越多,机器压力就越大。
- • sleeping:正在休眠的进程数
- • stopped:停止的进程数
- • zombie:僵尸进程数
第三行:
- • us:用户空间占 CPU 的百分比(像 shell 程序、各种语言的编译器、各种应用、
- web 服务器和各种桌面应用都算是运行在用户地址空间的进程,一般绝大多数的
- CPU 时间都是运行在用户态)
- • sy: 内核空间占 CPU 的百分比(所有进程要使用的系统资源都是由 Linux 内核处
- 理的,对于操作系统的设计来说,消耗在内核态的时间应该是越少越好)
- • ni:用户进程空间改变过优先级(ni 是 nice 的缩写,可以通过 nice 值调整进程用
- 户态的优先级,这里显示的 ni 表示调整过 nice 值的进程消耗掉的 CPU 时间,如
- 果系统中没有进程被调整过 nice 值,那么 ni 就显示为 0)
- • id:空闲 CPU 占用率
- • wa:等待输入输出的 CPU 时间百分比
- • hi:硬中断占用百分比(硬中断是硬盘、网卡等硬件设备发送给 CPU 的中断消息,
- 当 CPU 收到中断消息后需要进行适当的处理(消耗 CPU 时间)
- • si:软中断占用百分比(软中断是由程序发出的中断,最终也会执行相应的处理程序,消耗 CPU 时间)•
- • st:steal time
第四行:
- • total:物理内存总量
- • free:空闲内存量
- • used:使用的内存量
- • buffer/cache:用作内核缓存的内存量
第五行:
- • total:交换区内存总量
- • free:空闲交换区总量
- • used:使用的交换区总量
- • buffer/cache:缓冲的交换区总量
- 注意:所有程序的运行都是在内存中进行的,所以内存的性能对与机器来说非常重要。
- 当内存的 free 变少的时候,需要看交换区中的 used 信息。Swap 分区是由硬盘提供的交换
- 区,当物理内存不够用的时候,操作系统才会把暂时不用的数据放到 Swap 中。所以当这个
- 数值变高时,说明内存是真的不够用了。
(2)进程信息。
- • PID:进程 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 时间占用百分比
- • %MEM:进程使用的物理内存百分比
- • TIME+:进程使用的 CPU 时间总计,单位 1/100 秒
- • COMMAND:命令名/命令行
- 还有一些参数,可以通过按 f 键可以编辑显示内容。
用来删除执行中的程序或工作。kill 可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用 SIGKILL(9)信息尝试强制删除程序。
>使用方法
kill 命令的基本格式:kill [选项] [进程 id]
选项如下:
- • -a:当处理当前进程时,不限制命令名和进程号的对应关系;
- • -l:<信息编号>:若不加<信息编号>选项,则-l 参数会列出全部的信息名称;
- • -p:指定 kill 命令只打印相关进程的进程号,而不发送任何信号;
- • -s<信息名称或编号>:指定要送出的信息;
- • -u:指定用户。
kill 掌握最常规用法即可,常与 ps 命令结合在一起使用
对于僵尸进程,可以用 kill -9 来强制终止退出。