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进程的例子

1
2
3
[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