一、进程
1.进程的概念
程序是人类按照机器能够读懂的语言所写的代码(组成:数据+逻辑)
进程是程序在操作系统中的一次执行过程,是操作系统进行资源分配和调度的一个基本单位。它是一个程序在一个数据集合上运行过程的描述,当一个程序被加载到内存中运行时,便是一个进程。
进程是计算机通过人为调用开启程序之后,把硬盘当中的代码复制到内存中,然后让CPU通过代码调用它需要处理的数据,再进行相应地处理,并且把处理过的的数据保存到硬盘的一个过程。
进程对CPU的占用决定了系统速度的快慢,占用时间越长,CPU计算的时间越差,系统越慢。
2.进程和pid
在Linux系统中,PID(Process ID)是进程标识符(Process Identifier) 的缩写。它是一个唯一且非负的整数,用于在操作系统中唯一标识一个正在运行的进程。每个进程(包括程序、服务、后台任务等)启动时都会被分配一个PID,系统通过PID管理和跟踪进程的生命周期。
1 | [root@farrah 桌面]# ps #输第一次ps命令,会产生pid为2882的进程 |
3.进程的状态
在Linux内核里,进程有时候也叫做任务。
| 运行状态 | 说明 |
|---|---|
| R(running,ready) | 运行状态,并不意味着进程一定在运行中,它表明进程要么是在运行中,要么在运行队列里 |
| S(sleeping) | 睡眠状态(阻塞状态),进程在等待某些事件(如输入、输出、信号等)完成,这里的睡眠有时候也叫做中断睡眠。 |
| T(stopped) | 停止状态,可以通过发送 SIGSTOP 信号给进程来停止(T)进程。这个被暂停的进程可以通过发送 SIGCONT 信号让进程继续运行。 |
| D(Disk sleep) | 磁盘休眠状态,常是由于等待某些资源(如磁盘 I/O)而进入此状态。此时进程无法被唤醒,直到等待的资源可用,有时候也叫不可中断睡眠状态(uninterruptible sleep)。 |
| X(dead) | 死亡状态,这个状态只是一个返回状态,一般不会在任务列表里看到这个状态。 |
| Z(Zombies) | 僵尸状态,当进程退出并且父进程没有读取到子进程退出的返回代码时,就会产生僵死(尸)进程(使用wait()或waitpid()等函数来获取最终状态) |
二、进程管理
1. 常用选项
| 命令 | 功能 |
|---|---|
| -e | 显示所有进程 |
| -a | 显示 所有终端进程(除会话领导者) |
| -x | 显示 不关联终端的进程(如守护进程) |
| -f | 显示信息完整的格式 |
| -H | 显示进程的层级结构 |
| -o | 显示指定参数 |
| -u <用户> | 显示指定用户的进程(如 -u root ) |
| –sort= | 显示以指定参数的排序结果,显示以指定参数的排序结果,参数前加 - 表示降序 |
1 | ps -e |

1 | ps -a #不包含bash\shell,不包含守护进程(sshd,nginx等) |

1 | ps -u root #显示root用户的进程 |

2.常用组合
1.显示所有进程的详细信息
说明:BSD 风格,显示所有进程的详细信息。
1 | ps aux |

2.系统进程查看
显示所有进程的完整信息。
1 | ps -ef |
3.自定义输出格式
1 | #使用 -o 选项指定显示的字段: |
3.实际应用场景
1. 查找进程的 PID
1 | ps aux | grep nginx # 查找 nginx 进程的 PID |
2. 监控资源占用
1 | ps -eo pid,%cpu,%mem,cmd --sort=-%mem | head # 查看最耗内存的进程 |
3. 杀死进程前的确认
1 | ps -p 5678 -o pid,cmd # 确认 PID=5678 的进程是否为目标进程 |
4. 查看进程树
1 | ps -ef --forest # 显示父子进程关系 |
4.动态查看进程top
top是Linux中最常用的实时系统监控工具,能够动态显示 进程资源占用 和 系统整体状态。它提供了交互式操作,方便用户快速分析性能瓶颈
1.基础语法
1 | top # 启动 top |
top 界面分为 摘要区(系统概览)和 进程列表区(实时进程信息)
上半部分(系统概览)
- 系统时间/负载
- 任务统计(176 total)
- CPU使用分布(99.7% idle)
- 内存使用(3.8GB total)
- Swap使用(4.0GB free)
下半部分(进程列表)
| 字段 | 说明 |
|---|---|
| VIRT | 虚拟内存 |
| RES | 常驻内存 |
| SHR | 共享内存 |
| NI | Nice值(-20-19) |


2.交互式命令(运行中按快捷键)
| 命令 | 功能 |
|---|---|
| k | 终止进程(输入 PID,再输入信号,默认 SIGTERM) |
| r | 调整进程优先级(输入 PID,再输入 Nice 值)。 |
| P | 按 CPU 使用率排序。 |
| M | 按内存使用率排序 |
| T | 按运行时间排序 |
| N | 按PID排序 |
| Z | 切换 颜色高亮显示 |
| c | 显示完整命令路径 |
| l | 展开显示每个 CPU 核心的负载 |
| h | 查看帮助信息 |
| 空格 | 立即刷新界面 |
5.信号控制
常用信号
| 信号 | 说明 |
|---|---|
| 1 | SIGHUP (重载配置)/重刷新一个进程,主要用户服务的刷新 |
| 2 | 中断 |
| 9 | SIGKILL (强制终止)/杀掉一个进程,但不杀掉其子进程(centos7) |
| 15 | SIGTERM (正常终止)/杀掉进程及其子进程 |
| 18 | SIGCONT (恢复执行) |
| 19 | SIGSTOP (暂停)/暂停一个进程 |
1 | #启动httpd服务 |
6.进程优先级
Nice值范围
-20(最高)到 19(最低)
查看优先级:
1 | ps axo pid,command,nice --sort=-nice |
7.作业控制
linux可以在一个终端中管理多个任务进程(这些进程称之为job)。 有些进程会占用终端运行很久或是一直占用终端,那么想要运行第二进程 就无法操作了, 所以进程可以放到后台执行,这样就不影响在同一个终端运行第二个进程了
前后台管理
查看当前终端运行的job
1 | [root@farrah 桌面]# jobs -l #此时为空 |
如图,等待20秒后执行命令

1 | # &为后台符号 让sleep在终端后台继续运行 |
区别
kill 1 :终止PID为1的进程(系统进程)
kill %1 :终止作业号为1的后台进程
8.虚拟文件系统 proc
关键文件
1 | /proc/cpuinfo # CPU信息 |
查看命令
1 | cat /proc/cpuinfo # 查看CPU详情 |