1.进程的基本知识介绍
简单的来说,进程就是程序运行时的状态(动态)。进程是运行程序中的一个副本,在程序的运行过程中会把程序复制到内存缓存空间中。
注意:终止期会将在工作结束后,把所有占用的系统资源进行全部回收,如若不进行此项操作,系统中垃圾会越来越多,直至系统崩溃。
进程&线程关系
1.进程是资源调用的最小单位
2.线程是进程的最小单位
3.程序执行流是从上倒下贯穿运行的,当进程是多任务物,cpu是多核心,多任务应该同时被每个核心处理,每个核心处理的任务叫线程
4.线程资源是共享的进程是资源调配的最小单位,线程是进程的最小单位,进程中的所有资源被线程共享==
- 进程的状态分类及解释
进程的的状态 | 状态解释 |
---|---|
R(TAKS_RUNNING) | 可执行态(running,ready) |
S(TASK_INTRRUPTABLE) | 可唤醒休眠 |
D(TASK_UNINTRRUPTABLE) | 不可唤醒休眠 |
T(TASK_STOP) | 暂停状态 |
Z(EXIT_ZOMBIE) | 僵死状态 |
2.进程的查看
2.1 利用图形查看工具查看进程
gnome-system-monitor 图形进程查看工具 来查看进程
2.2 利用ps命令查看进程
ps命令显示当前命令执行时的状态
ps命令使用的详解可用man ps查看
2.2.1 ps命令的常见参数与解释
1.BSD 风格 (常用命令参数)
ps命令+参数 | 参数解释 |
---|---|
a | 与终端相关的进程(当用户登陆系统后产生的进程都是带终端的) |
x | 与终端无关相关的进程 |
u | 用户信息归类的查看方式 |
f | 进程层级关系 |
o | 指定查看选项,pid,comm,nice,%cpu,%mem |
2.UNIX 风格 (常用命令参数)
ps命令+参数 | 参数解释 |
---|---|
-o | 指定查看选项,pid,comm,nice,%cpu,%mem,nice (unix) |
-e | 显示所有进程 |
-f | 显示信息的完整格式 |
-H | 显示进程的层级结构 |
- -sort=uid,-ppid,+pid | 按某种参数进行排序显示 |
区别:UNLIX参数带(-)和BSD格式参数不带(-)
2.2.2 ps 命令显示信息
ps aux显示信息如下:
ps aux显示的信息 | 解释 |
---|---|
USER | 进程所有人 |
PID | 进程id |
%CPU | 进程占用cpu的百分比 |
%MEM | 进程占用内存资源的百分比 |
VSZ | 进程使用的虚拟内存大小 |
RSS | 进程常驻内存中的数据大小 |
TTY | 进程用到的终端 |
STAT | 进程状态 |
START | 进程运行时长 |
TIME | 进程占用cpu时长 |
COMMAND | 进程名称 |
- ps a——显示与终端相关进程(BSD运行方式)
•ps x——显示所有与终端无关进程(BSD运行方式)
•ps ax——显示所有进程,包括与终端相关进程和与终端无关进程(BSD运行方式)
注意:ps ax显示进程以资源的方式进行归类(PID从小到大排列)
•ps u——以用户为归类来显示进程状态信息(BSD运行方式)
•ps f ——层级结构显示进程信息(BSD运行方式)
- ps -e 显示所有进程(UNIX运行方式)
• ps -f 显示完整格式信息(UNIX运行方式)
• ps -H 层级结构显示进程的相关信息(UNIX运行方式)
- ps -o 指定查看选项,如pid,comm,%cpu,%mem,nice
ps可以对当前的某些资源进行排序
ps axo pid,comm,%mem --sort=%mem正序显示
ps axo pid,comm,%mem --sort=-%mem反序显示
2.3 pgrep 命令—— 进程过滤
pgrep 命令 | 指令解释 |
---|---|
-u uid | 显示指定用户进程 |
-U user | 显示指定用户进程 |
-t tty | 显示指定终端进程 |
-l | 显示进程名称 |
-a | 显示进程的完整名称 |
-P pid | 显示指定进程的子进程 |
2.4 pidof 根据进程名称获取pid
- pidof 指令 ——查看一个命令进程的ID
2.5 top命令的用法
top 命令 —— 动态进程查看
top中的内容显示信息:(ctrl +c结束查看)
top命令可以真实查看进程状况,具有实时显示功能,默认3s刷新一次。
top 显 示 进 程 信 息 |
---|
top–系统当前时间 |
up:系统运行时长 |
user:登录当前系统的用户数量 |
oad average:系统的负载,分别代表平均负载1分钟 5分钟 15 分钟的队列长度 |
task–任务总量 |
running:运行进程数量 |
sleeping:休眠进程数量 |
stopped:暂停进程数量 |
zombie:僵死进程数量 |
%cpu(s)–cpu占用百分比/使用量 |
us:用户空间,用户占用CPU量 |
sy:内核空间,内核占用CPU量 |
ni :nice,进程优先级调整占用的CPU量调整时间 |
id:空闲时间 |
wa :等待I/O输入输出时间 |
hi:处理硬件中断时间 |
si:处理软件中断时间 |
st :被虚拟化程序占用的百分比 |
buff/cache:缓存=buff等待写入磁盘的+cache读取的,都可以被系统回收利用(内存的 |
Swap:虚拟内存使用量,交换分区占用 |
PR–优先级 |
NI :优先级代表的nice值 |
VIRT:虚拟CPU |
RES:常驻内存 |
SHR:贡献资源 |
S:状态 |
top命令的参数
top命令的参数 | 命令解释 |
---|---|
top -d | 指定刷新频率 |
top -b | 以批次方式显示 |
top -n | 指定显示的批次数量 |
top -d 1 指定刷新频率为1s
top -b 以批次方式显示
top -b -d1 以批次的方式,指定刷新频率为1s进行显示
top -n 以批次方式显示
top -b -d1 -n 2 以批次的方式,指定刷新频率为1s,批次数量为2进行显示
top的相关参数解释说明
top内部参数 | 功能 |
---|---|
P | cpu百分比排序 |
M | 内存百分比 |
T | 累计占用cpu时间 |
l | 开启/关掉uptime信息 |
t | 开启/关闭task&cpu信息 |
s | 调整刷新频率 |
k | 终止进程 |
u | 查看指定用户进程 |
3.进程优先级
内核优先级的范围
- 对Linux而言优先级被划分成固定个数 (0-139),共140个优先级(内核把程序划分为140个队列)
- 1-99为实时有优先级,数字越大优先级越高,不能人为干预,是内核对于程序本身的控制,系统自用
- 100-139为静态优先级(共40个),数字越小优先级越高,是人为能干预的
NICE值
NICE值:-20~19对用静态优先级,数字越小优先级越高
普通用户只可以调低优先级,超级用户任意调整
关于优先级的命令 | 功能 |
---|---|
ps ax –o nice | 查看进程优先级 |
reince –n 优先级的值 pid | 更改进程优先级 |
nice –n 优先级 程序 | 调整开启进程时的指定优先级 |
reince –n 优先级的值 pid :更改进程优先级
nice –n 优先级 程序:调整开启进程时的指定优先级
注意:状态的一些说明
stat(状态) | 解释说明 |
---|---|
S | sleeping |
< | 优先级高 |
s | 顶级进程 |
T | stop |
N | 优先级低 |
R | running |
+ | 运行在前台 |
4.程序的前后台的调用
进程前后台调用相关命令
指令 | 功能 |
---|---|
ctrl+z | 把占用shell的进程打入后台挂起 |
bg | 把后台挂起的进程运行起来 |
fg | 把后台进程调回前台 |
& | 运行进程在后台 |
jobs | 查看当前shell中后台所有工作 |
ctrl+z :把占用shell的进程打入后台挂起
jobs : 查看当前shell中后台所有工作|
bg+后台运行job编号:把后台挂起的进程运行起来
fg +后台运行job编号:把后台进程调回前台
&:开启时直接在后台进行执行
5.进程信息号
进程信息号可以用man 7 signal指令进行查看
5.1 进程信号中可控信号类型
可控进程信号 | 信号含义 |
---|---|
1 | 重新加载系统配置文件(source) |
2 | 中断键盘输入 |
3 | 清空内存中的鼠标(ctrl+ \ ) |
9 | 强行结束进程(不能被阻塞) |
15 | 正常关闭进程(会被阻塞) |
18 | 运行被暂停的进程 |
19 | 暂停进程(不会被系统阻塞) |
20 | 暂停进程(会被系统阻塞的) |
1 —重新加载系统配置文件
2 —中断键盘输入
3 —清空内存中的鼠标(ctrl+ \ )
9— 强行结束进程(不能被阻塞)
15 — 正常关闭进程(会被阻塞)
18— 运行被暂停的进程
19—强制暂停进程(不会被系统阻塞)
20 —正常暂停进程(会被系统阻塞的)
5.2 进程信号控制工具
1.kill 进程信号 pid
2.killall 进程信号 进程名字
3.pkill 信号 进程名称