进程介绍
linux系统中几乎任何行动都会以进程的形式进行例如:
- 如果你用网络浏览器查看网页,浏览器就作为进程运行
- 如果键入bash shell 命令,这个shell就作为进程运行
- 如果你用chmod命令更改文件权限,chmod就作为单独的进程来执行
- 进程是完成工作的形式,linux内核的基本职责就是为了进程提供做事情的地方以及使用的资源,不让彼此撞车
进程是已启动的可执行程序的运行事例,进程有一些组成部分: - 已分配内存的地址空间
- 安全属性,包括所有权凭据及特权
- 程序代码的一个或多个执行进程
- 进程状态
补充:进程名称带有【】的是系统进程,不带【】的是用户创建的进程
进程与程序
程序:二进制文件,静态
进程:是程序运行的过程,动态的产生和消亡,有生命周期及运行状态
进程的属性
- 进程ID(PID):是唯一的值,用来区分进程
- 父进程(PPID):任何一个进程都可以fork子进程,而自己就是父进程
- 启动进程的用户ID(UID)和所归属的组(GID)
- 进程状态:分为运行R 休眠S 僵尸Z
- 进程执行的优先级
- 进程所连接的终端名
- 进程资源占用:如内存、CPU等
进程五种状态
- 可运行(R):处于可运行状态的进程,一旦有机会,就会访问CPU。多个进程可以(而且进程)处于可以运行状态,但是因为在任何给定时间内只有一个进程可以在CPU上运行,所以实际上这些进程中只有一个在任何给定的实例上运行
- 自愿(可终端)睡眠(s) 从名称中可以看出,处于自愿睡眠状态的进程选择处于该状态。通常,这一进程在某事发生之前无事可做
- 非自愿(不可中断或强制)睡眠(D):内核迫使进程进入非自愿睡眠状态。该进程并没有选择睡眠,它情缘运行以便做完事情。当资源被释放时,内核会唤醒进程并将设置为可运行状态。
- 停止(挂起的)进程(T):用户有事决定挂起进程,当挂起进程在被用户重新启动前不会执行任何操作。
- 僵尸进程(Z):每隔快要种植的进程会经理一个短暂的僵尸状态,然而有时有效进程会一直停留在僵尸状态。
- s即代表自愿和非自愿,D代表不可中断或不可强制的非自愿的进程比如复制是非自愿不可中断的进程
进程管理
- PS : 静态任务管理器——显示进程上一秒的状态
- top:动态任务管理器——实时显示当前任务进程状态
- kill:杀死单个进程
- killall:杀死一个进程树
有些进程杀不死
ps
ps——report a anapshot of the current processes
语法: ps 【options】
常用参数
- a : 显示跟当前终端关联的所有进程
- u:基于用户的格式显示
- U:显示某用户ID所有的进程
- x:显示所有进程,不以终端机来区分
- A:显示所有程序
- e:此参数的效果和指定“A”参数相同
- f:用ASCII字符显示梳妆结构,表达程序间的相互关系
- o:自定义输出格式
- USER: 进程所有者
- PID: pid
- %CPU: 占用的CPU使用率
- %MEN: 占用的内存使用率
- VSZ: 占用的虚拟内存大小
- RSS: 占用的内存大小(虚拟内存无限大)
- TTY: 终端号
- STAT: 进程状态
- START: 进程开始时间
- TIME: 执行的时间
- COMMAND: 所执行的指令
pstree
top
语法:top
top -b 显示所有进程
-
第一行:
当前时间,
运行时间
当前登录系统的用户数量
load average后面的三个数字分别表示距离现在1分钟,5分钟,15分钟的负载情况(负载情况如果超过3就非常高了)。 -
第二行:
Tasks: 232 total表示总进程树119
2running 正在运行的进程数
230 sleeping 睡眠进程树
0 stopped 停止的进程树
0 zombie 僵尸进程数 -
第三行(CPU使用情况)
21.5 us 系统用户进程使用CPU百分比
8.4 sy 内核中的进程占用CPU百分比
0.0 ni 用户进程空间内改变过优先级的进程占用百分比
69.8 id 空闲的CPU百分比
0.0 wa CPU等待I/I完成时间总量
0.0 hi 硬中断占比
0.3 si 软中断占比
0.0 st 虚拟机占用物理机的时间,例如物理机运行了kvm,则表示kvm占用物理机的CPU时间 -
第四行(物理内存Mem,单位kib)
995748 total 物理内存总量
71228 free 空闲内存总量
599052 used 使用的物理内存重量
325468 buff/cache 内核缓存内存量 -
第五行 (Swap 奇偶啊换内存)
2097418 total 交换分区总量
1645820 free 空闲交换分区总量
451328 used 使用的交换分区总量
89816 avail Mem cached可利用内存总量 -
表头(详细信息)
PID 进程号
USER 进程管理用户
PR 进程优先级
NI nice值,负值表示高优先级,正值表示低优先级
VIRT 虚拟内存
RES 物理内存
SHR 共享内存
S 进程状态
%CPU 上次更新到现在的CPU时间占用百分比
%MEM 进程使用的物理内存百分比
TIME+ 进程使用的CPU时间总计,单位1/100秒
COMMAND 进程名称 -
top快捷键
s 默认三秒数显一次,按 s 修改刷新时间(按s后显示红线位置,输入你要修改的时间间隔,回车既可以)
空格 立即数显
q 退出
P 按CPU排序
M 按内存排序
T 按时间培训
数字1 显示每隔内核的CPU使用率
u/U 指定显示的用户
h 帮助
进程终结
终结单个进程: kill [PID]
终结一个进程 killall [processes name]
kill
kill原理:想linux内核发送一个系统操作信号,和某个程序的进程标识号,然后系统内核就可以对进程标识号指定的进程进行操作
语法: kill 【选项】【进程号】
选项
kill -l 查看信号
kill -9 进程号 (kill -s SIGKILL 进程号)强制杀死进程
实例:
启动一个进程 ping localhost
查看进程号(ps aux),
杀死进程 kill -9 33258
结果
killall
真假kill(系统自带kill和第三方kill)
第三方kill 存放在 /bin/kill路径下,一般使用第三方kill
进程优先级
nice
在程序还没有运行的情况下设置程序的优先级
实例:
查看 top -b
调整优先级(renice)
renice
程序已经在运行的情况下改变程序的优先级
调账用户优先级,用户开启的进程统一改为此优先级