一、进程·、程序与线程。
程序:一组指令以及参数集合,按照相应的逻辑控制计算机完成特性任务。
进程:运行的程序,动态。操作系统上的基本单位具有生命周期,具有状态。
操作系统以进程为单位分配系统资源
每一个进程运行时独立的
具有独立的地址空间,运行状态
多个程序同时运行,每一个程序就是一个进程
线程:
一个进程中可有多个线程
线程无法独立运行,
二、进程的生命周期:
1)运行——>就绪:1,主要是进程占用CPU的时间过长,而系统分配给该进程占用CPU的时间是有限的;2,在采用抢先式优先级调度算法的系统中,当有更高优先级的进程要运行时,该进程就被迫让出CPU,该进程便由执行状态转变为就绪状态。
2) 就绪——>运行:运行的进程的时间片用完,调度就转到就绪队列中选择合适的进程分配CPU
3)运行——>阻塞:正在执行的进程因发生某等待事件而无法执行,则进程由执行状态变为阻塞状态,如发生了I/O请求
4) 阻塞——>就绪:进程所等待的事件已经发生,就进入就绪队列
5)僵死状态:进程已经结束但未释放进程控制块(PCB),Linux 使用TASK_ZOMBIE 宏表示此状态。
三、进程的管理工具
1、 pstree 进程树 查看进程树之间的关系
-p:显示pid
-u:显示用户
2、 ps
-a:显示所有进程
-u:显示以用户为主的进程
-x:和au配合使用,显示完整信息
-l:较长,较详细的将PID的信息列出。
参数 | 解释 |
---|---|
F | 程序的旗标 4:使用者superuser |
S | 程序的状态(STAT) |
UID | 执行者的身份 |
PID | 进程的ID号 |
PPID | 父进程的ID |
C | CPU使用资源百分比 |
NI | 这个进程的nice值 |
SZ | 使用过的内存大小 |
TIME | 使用掉的CPU时间 |
3、pgrep(通过pgrep来获得正在被调度的进程的相关信息)
默认只显示PID
-l:同时显示进程名和PID
-o:当匹配多个进程时,显示进程号最小的那个
-n:当匹配多个进程时,显示进程号最大的那个
4、 kill(杀死指定进程的PID进程)&&killall(杀死所有同名进程)&&pkill(ps+kill)
-9:杀死进程(强制杀死)
-w:等待进程死亡
-l:列出已知信号
-15:正常终止
kill 选项 进程号(pid)
5、htop(监控软件)
使用htop命令来查看进程:首先需安装epel rpm 包
1)安装
2)使用
快捷键 | 快捷键 | 说明 |
---|---|---|
h,? | F1 | 查看htop使用说明 |
S | F2 | htop设定(配置界面中的显示信息) |
/ | F3 | 搜索进程 |
\ | F4 | 增量进程过滤器 |
t | F5 | 显示树状结构 |
<,> | F6 | 选择排序方式 |
[ | F7 | 可减少nice值可以提高对应进程的优先级 |
] | F8 | 可增加nice值,降低对应进程的优先级 |
k | F9 | 可对进程传递信号(杀死进程) |
q | F10 | 结束htop |
6、vmstat(监控工具)
vmstat工具使用通过两个参数完成,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采集的次数。
参数 | 功能 |
---|---|
-v | 显示vmstat版本信息 |
-n | 只在开始时显示一次各字段名称 |
-a | 显示活跃和非活跃内存 |
-d | 显示各个磁盘相关统计信息 |
-D | 显示磁盘总体信息 |
7、lsof(列出当前系统打开文件的工具)
参数 | 功能 |
---|---|
-u | 显示归属uname或GID的进程情况 |
-i | 用以显示符合条件的进程情况 |
-p | 列出进程号所标识的进程打开的文件 |
-d | 用于显示fd为某个的进程 |
+d | 显示目录下被进程开启的文件 |
+D | 显示目录下被进程开启的文件 ,但会搜索,时间较长 |
-c | 显示以某字母或字母段开头进程现在打开的文件 |
-g | 显示归属gname或GID的进程情况 |
四、进程优先级
1、相对优先级nice:SCHED_OTHER调整策略运行的进程的相对优先级称为进程的nice值。
nice值越高:表示优先级越低,例如+19,该进程容易将CPU使用量让给其他进程
nice值越低:表示优先级越高。例如-20,该进程更不倾向于让出CPU
2、查看进程的nice级别
1)top
NI:实际nice级别
2)ps
3、更新现有进程的nice级别
1)top
r:调整进程的优先级
2)shell
五、进程的状态
sleeping —睡眠状态
stopping —停止状态
running —运行状态
zombie —僵死状态
进程的状态是实时变化的。
六、进程前后台与状态
1)在前台一次只能运行一个作业。
2)在后台可以运行多个作业
例:
ping 192.168.42.2 > /dev/null 2>&1 &
把ping的结果放到/dev/null 放到后台运行
jobs(查看后台作业与终端,不同终端上的作业要在对应终端上查看。)
fg %job编号 把后台作业调到前台
bg %job编号 把后台作业运行起来
ctrl + z :把进程挂起
kill %job编号 先停止,在杀死。
七、/proc和/sys介绍
1、/proc 正在运行的内核信息映射
1)主要输出:进程信息
内存资源信息
磁盘分区信息
2)/proc下的文件基本都是只读的
2、/sys 文件系统
用户态可以通过对sys文件系统的访问,来看内核态的一些驱动或者设备。