Linux-进程管理笔记
进程的优先级
说明
- 优先级越高的进程就能够获得更多的CPU运行时间
- 能够更优先的获得运行的机会
优先级的调整
- 用户可以调整的优先级(priority)范围是100-139
每一个进程都有一个nice值, nice值是从-20到19,分别对应100-139
可以调整进程自己的nice值,来调整优先级
- nice值越小,优先级越高
- 默认情况下每个进程的优先级都是0
如果有进程的优先级是3,就说明该进程降低了自己的优先级,普通用户只能调大nice值,管理员可以随意调整
PID(process ID):进程号
Init进程
每一个进程都有父进程,除了init,init是所有进程的父进程
init的进程号永远为1
其他进程
进程的相关属性信息在/proc目录下,每一个目录对应一个进程
每一个进程的进程号都是唯一的,即使进程退出了,进程的号码一般不会被占用
访问到的都是内核的映射。不是文件,是内核参数
进程号文件夹中的文件记载了进程运行的命令,内存,使用的cpu等等
进程的分类
- 与终端有关的进程
- 与终端无关的进程
进程状态表
标识符 | 描述 |
---|---|
D | 不可中断的睡眠 |
R | 运行或就绪 |
S | 可中断的睡眠 |
T | 停止 |
Z | 僵死 |
< | 高优先级的进程 |
N | 低优先级的进程 |
+ | 前台进程组中的进程 |
l | 表示多线程进程 |
s | 会话进程的首进程(领导者进程) |
进程查看命令
ps命令 显示进程状态,多种使用风格,unix的两大阵营,BSD风格(不加-),SYSV风格(加-)
Example: ps -aux
参数说明-BSD风格
a:BSD风格,显示所有与终端有关的进程,与x一起用显示所有
u:能够显示详细的信息
x:BSD风格,显示所有与终端无关的进程
Ps命令输出信息的说明
单独查看Firefox进程的例子
[root@localhost Liarlee]# ps -aux | grep firefox
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1915 5.7 6.9 9324108 570096 tty2 Sl+ 11:23 2:00 /usr/lib64/firefox/firefox
说明表格
USER | PID | %CPU | %MEM | RSS | VSZ | TTY | START | STAT | TIME | COMMAND |
---|---|---|---|---|---|---|---|---|---|---|
进程发起者 | 进程号 | 使用cpu百分比 | 使用内存的百分比 | 常驻内存集 | 虚拟内存集 | 控制台关联 | 启动时间 | 状态 | 运行时间 | 哪一个命令启动的进程 |
[]表示是一个内核线程,不是一个用户进程 |
另一个风格-SYSV风格
-e SYSV风格,显示所有的进程
-F 额外的完全格式,显示更多的字段
-l 长格式
PRI:优先级
NI:nice值
SZ:size
PSR:正在运行在那个CPU
ps -o 指定显示的字段,ps 不加参数只显示前台进程,一般使用ps -axo
例:ps -axo comm,pid,ni
man文档中有单独的说明-o可以指定那些字段
Pstree进程树
pgrep 查找符合某种特性的进程 例: pgrep bash pgrep -u root bash 以root用户为属主运行的bash进程
只显示进程号,不显示进程的名称
-u euid 有效ID
-U uid 进程发起者ID
pidof 查看某一个进程名字对应得进程号 pidof init | pidof sshd | pidof crond
Top
关于top显示信息的说明
当前系统时间 , up运行时长,登陆用户,平均负载(平均队列长度,队列长度越小cpu负载越低)。
所有的进程数量,正在运行的进程数量,多少个睡眠进程,多少个僵尸进程
每个cpu负载,默认是多颗cpu平均负载,数字1,表示展开查看。
us : 用户空间占用的
sy: 运行在系统占据了多少
ni:nice值影响的cpu比例
id: 空闲的百分比
wa: 等待IO完成的百分比,占据的时间
hi :中断占据的百分比
si : 软中断的时间
st : 被偷走的时间
内存的使用
交换的使用
默认使用cpu百分比排序
Top交互式的子命令
M:使用内存百分比排序
P: 使用cpu百分比排序
T: 占用cpu时间排序
l:不显示平均负载启动时间
t:不显示进程和cpu负载
m:不显示关于内存和交换的信息
c: 是否显示完整的命令行
q: 退出top
k: 杀死某个进程
更改top命令的选项:
-d 更改刷新是时常
-b 批处理模式 会刷新一次,刷新出一屏
-n 3 : 批处理模式只显示多少次
进程间通信:
进程之间彼此不能感受到彼此的存在,因此进程间的通信有几种机制:
IPC
进程间通信,unix中非常常用的机制,inter process Communication
共享内存
信号:signal
semaphore
手动控制进程间通信: Kill
kill -l 显示所有的kill信号
1 sighup 让一个进程不重启,重读配置文件,让文件的新配置生效
2 sigint 中断一个进程,ctrl c 就是发送了 2 信号
9 sigkill 杀死一个进程 , 强行关闭 , 没有任何余地
15 sigterm 中止一个进程
指定发送信号:
kill -1
kill -sigkill
kill -kill
杀死所有某个名字的进程:
killall command
调整运行中进程的优先级
renice 进程优先级 进程号
renice 3 3704
nice -n nice值 命令
其他
vmstat
vmstat 1 每一秒显示一次
pkill 类似于 pgrep
bg 把前台的作业放入后台
bg 【%】jobid 可以指定执行某一个作业 默认执行+ 作业
jobs 查看后台的所有作业 作业号不同于进程号
如果进程上有+ 号 说明接下来将要继续操作的作业
如果进程上有-好 说明执行完+的作业之后再执行-号作业
fg 将后台的作业放入前台 ,用法类似于bg
如果杀死某些作业 , kill %2 杀死作业2