进程管理
程序:程序是完成某些功能的代码的集合, 保存在磁盘上的文件
进程:是程序运行之后,在内存中的状态,运行的程序会产生一个或多个进程
/proc
目录下蓝色数字目录,都是进程号
进程的生命周期:
- 创建:进程在创建时需要申请一个空白PCB,向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态。
- 就绪:进程已经准备好,已分配到所需资源,只要分配到CPU就能够立即运行。
- 执行:进程处于就绪状态被调度后,进程进入执行状态。
- 阻塞:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受到阻塞。在满足请求时进入就绪状态等待系统调用
- 终止:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行
进程的查看
静态查看:ps、pgrep
动态查看:top
查看进程 PID:pgrep
ps
监视系统进程的主要工具,显式的是瞬间的进程状况
|
|
选项说明:
|
|
|
|
pts:伪终端、虚拟终端
tty1–tty6: 字符终端
|
|
STAT:进程状态
- R:该进程正在运行或就绪
- S:休眠进程
- Z:僵尸进程,实际上该进程已经终止,但是它的父进程却无法正常终止它,造成僵尸状态
- T:该进程正在跟踪或者已经终止
pstree
以树形显示正在运行的进程
|
|
top
实时查看系统的运行状态
- 统计信息区(共五行)
- 当前系统时间、系统运行时间、当前登录系统数、系统平均负载:1min 5min 15min
- 任务(进程):总数、正在运行的、休眠的、停止的、僵尸进程
- CPU 状态(%):用户空间、内核空间、改变过优先级的、空闲的、IO 等待的、硬中断、软中断、虚拟机
- 内存状态(K):总量、空闲的、使用中的、缓存的
- swap状态(K):总量、空闲的、使用中、缓冲的
- 进程信息区
- PID - 进程 id
- USER - 所有者
- PR - 进程优先级
- NI - nice 值,负值表示高优先级,正值表示低优先级
- VIRT - 进程使用虚拟内存量,单位 kb
- RES - 进程使用的、未被换出的物理内存大小,单位 kb
- SHR - 共享内存大小,单位 kb
- S - 进程状态
- %CPU - 上次更新到现在的 CPU 时间占用百分比
- %MEM - 进程使用的物理内存百分比
- TIME+ - 进程使用的物理内存百分比
- COMMAND - 进程命令
top
操作:
- 1 – 展开cpu信息
- f – 更改显示内容
- M – 根据驻留内存大小进行排序。
- P – 根据CPU使用百分比大小进行排序
- q – 退出
watch 命令
|
|
示例:每秒执行一次 ps aux
|
|
进程的控制
进程前后台调度
写一个脚本 test.sh
|
|
-
前台运行
1
[root@localhost tmp]# ./test.sh
-
后台运行
-
在执行的时候,直接将其放置于后台运行
1 2
[root@localhost tmp]# ./test.sh & [1] 32806
-
对于已经在前台运行的命令,ctrl+z 将放在后台暂停
-
bg 任务编号:指定任务在后台运行
-
fg 任务编号:将后台运行的命令变成前台运行
-
注意:不管前台运行,还是后台运行,只要终端一关闭,进程就停止了。
因为终端运行的进程是当前终端 bash 的子进程
如何解决?nohup
|
|
通过信号控制进程
如何终止一个进程?
- 前台进程 使用
ctrl+c
kill
、pkill
、killall
等命令
kill
通过进程的 PID 来操作
|
|
信号的列表:
|
|
常用的信号:
|
|
pkill
通过进程的名称或属性进程操作
|
|
killall:
killall
命令名字 # 杀死全部的同名进程
xkill:杀死图形化资源
当执行了xkill之后,鼠标会变成“x”形,点到任何图形资源,就会终止该资源的运行
进程的 nice 值
谦让值:nice
作用:指定或者调整用户进程的nice值
- nice值越高,该进程抢占资源的能力越弱
- nice值越低,该进程抢占资源的能力越强
范围:-20~19
相关命令
-
nice —— 运行时直接设置nice值
用法: nice -n 数字 command
-
renice —— 对于已经运行的,调整nice值
用法: renice 数字 PID