Linux中,每个执行的程序都被称之为一个进程,每一个进程都会有一个ID号(进程号pid)
可以这么理解,程序运行起来就是进程,程序是静态的,进程是动态的
进程可能以两种方式存在,前台和后台,前台进程是用户在屏幕上可以操作的,后台进程则是实际在进行的
一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中,直到关机才会结束
比如,我在这里用某个软件给另一个设备的人发消息,消息是从我这里的界面,发到软件背后的服务器,然后这个过程中运行的服务程序就是后台程序
ps指令
ps是用来查看目前系统中,有哪些正在执行的进程,以及这些进程的执行状况
基本语法
bash
ps [可选选项]
选项
| -e | 显示所有进程 |
| -f | 以全格式 |
| -a | 显示当前终端的所有进程信息 |
| -u | 以用户的格式显示进程信息 |
| -x | 显示后台进程运行的参数 |
要用的话一般是同时使用的 ps -aux,或者ps -ef
直接输出的显示

| 字段 | 说明 |
|---|---|
| PID | 进程识别号 |
| TTY | 终端机号 |
| TIME | 此进程所消耗cpu时间 |
| CMD | 正在执行的命令或进程名 |
aux选项的:

| 字段 | 说明 |
|---|---|
| USER | 进程执行用户 |
| PID | 进程执行号 |
| %CPU | 当前程序占用cpu百分比 |
| %MEM | 占用的实际物理内存百分比 |
| VSZ | 占用虚拟内存的大小(单位KB |
| RSS | 物理内存占用大小(单位KB |
| TTY | 终端信息(名称,缩写 |
| STAT | 进程运行状态 |
| START | 进程开始执行的时间 |
| TIME | 使用CPU的总时长 |
| COMMAND | 执行这个进程的程序名/命令名 |
还有STAT显示的状态分类
STAT的状态分类
| S | 睡眠(后面加字母符号的是优先级不同 |
| s | 该进程是会话的先导进程 |
| N | 表示几次呢拥有更低的优先级 |
| R | 正在运行 |
| D | 短期等待 |
| Z | 僵尸进程(要定时清除 |
| T | 被跟踪或被停止 |
示例
bash
ps -aux | greq sshd #过滤出远程登陆服务
ps -aux | greq bash #过滤出终端
ef选项的(BSD风格):

| 字段 | 说明 |
|---|---|
| UID | 用户ID |
| PID | 进程ID |
| PPID | 父进程ID |
| C | cpu用于计算执行优先级的因子,数值越大,表明进程是CPU密集型运算,执行优先级会降低 |
| STIME | 进程启动的时间 |
| TTY | 完整的终端名称 |
| TIME | CPU时间 |
| CMD | 启动进程所用的命令和参数 |
kill指令
因某些进程需要停止或消耗资源过大时可以选择使用kill停止该进程
基本语法
bash
kill [选项] [进程号] #通过进程号杀死进程
killall [进程名称] #通过进程名称杀死进程,也可以使用
通配符
选项:
-9 强制终止
示例:
bash
kill 11425 #结束进程号为11425的进程
killaall gedit #将gedit及其子进程都关了
pstree指令
pstree指令可以用来更加直观的查看进程信息
基本语法
bash
pstree [选项]
常用选项
-p 显示进程的PID
-u 显示进程的所属用户
示例:
bash
pstree -u
#显示进程同时显示其所属用户
父子进程
父进程指一个进程创建了一个或多个进程,这个创建他们的进程就是他们的父进程
子进程就是进程创建的进程,通常父进程关闭后子进程也会关闭
ps -ef的PPID可以看到进程的父进程的进程号(如果为0代表本身就是最开始的进程