首先来介绍一下什么是进程?
当一个程序在运行的时候会读取到内存中,当再次使用的时候就会再复制一份运行,这时候就是每个独立的进程,程序是在磁盘上的,进程是在内存中。每个进程都是独立的进程,都是系统编号的。当进程结束,内存空间就会释放,也就是说每个进程都是都是有生命周期的。每个进程运行的环境就是context。如果父进程关闭子进程也会关闭。需要知道的是,父进程创建子进程的时候只分配名称不分配空间,当数据发生改变的时候才会分配独立的空间节省空间。下面介绍一些关于进程的小命令。
----------ps -report a snapshot(快照) of the current processes(显示当前的状态),支持正则表达式。
例1.ps axo pid,cmd,%mem,rss k %mem :按照内存排名显示
Init 3关掉图形化界面,此时按照%mem排序显示就不会有上面图形化界面的显示了。
例2.ps axo pid,cmd,%mem,user,ruser :user等同于euser就是生效者的名称,ruser就是发起者的名称。
例3.ps aux :详细显示进程每个字段的值
例4.watch -n1 "ps axo pid,cmd,psr|grep sleep" :实时观察使用的是哪一个cpu来休眠。
例5.ps -C aa.sh o pid,cmd :-C后面直接跟命令,注意:如果后面跟的是脚本就要运用shebang机制,不然不会显示指定选项的信息。(便于运行脚本查看进程)
例6. nice -n 10 ping 127.17.0.1:指定ping的优先级,然后查询ping的优先级用-C。
-------pgrep选项:用于搜索进程
pgrep [options] pattern
-u uid: effective user,生效者
例如: pgrep -lu root 就可以看到以root真正身份运行的进程
pgrep -au root 完整地显示以root真正身份运行的进程的信息,提示:a选项在centos6上并不是很好用。
-U uid: real user,真正发起运行命令者
-t terminal: 与指定终端相关的进程
例如: pgrep -at pts/0 显示pts/0进程的信息
-l: 显示进程名
-a: 显示完整格式的进程名 (这个选项在centos6中好像不能用)
Pgrep -a 支持正则
例如: pgrep -a "vi*"
-P pid: 显示指定进程的子进程
还有一个比较好用的工具
Pidof 进程名 :根据进程名查pid
Pidof systemd
Pidof init
例如:如果想要定时开启某一个服务就可以在脚本中运用pidof,用来开启某一个服务。
-------进程优先级(意味着cpu会先响应你,但是并不是说速度就快,例如ping,看回来的包的情况):
系统优先级: 数字越小,优先级越高
0-139(CentOS4,5)
各有140个运行队列和过期(等待)对列,也就是一共280个队列,和进程的多少,规模的大小没关系,时间是一致的O(1)。
0-98, 99(CentOS6)
realtime实时优先级(静态优先级): 99-0 值最大优先级最高,文档里的描述错误。
nice值(动态优先级): -20到19,对应系统优先级100-139或99,没有指定默认优先级为0,对应系统的120.
Big O:时间复杂度,用时和规模的关系
O(1),跟进程的规模无关,时间是一样的,时间恒等不变的,横线
O(logn) 时间缓慢增长
O(n)线性 增长较快,效率不如logn
O(n^2)抛物线 后续增长速度没有2^n块
O(2^n) 后续增长较快
进程优先级的图片说明:
关于进程优先级的说明:
ni: nice值
pri: priority 优先级
psr: processor CPU编号
rtprio: 实时优先级
例如:ps axo pid,cmd,psr,ni,pri,rtprio
进程优先级调整:
静态优先级: 100-139
进程默认启动时的nice值为0,优先级为120
只有根用户才能降低nice值(提高优先性)
例1:nice -n 10 ping 127.0.0.1指定优先级为10
例2:nice --10(负数10)ping 172.17.0.1指定优先级为-10
例3:renice -30 3941 更改3941号进程的优先级
------------进程管理工具top
相当于windows的任务管理器动态显示
us:用户空间 就是在应用程序层面做的操作(例如小计算),涉及不到内核操作系统,。
sy:内核空间 如果存储数据,就需要通过内核访问硬盘,这就是内核空间。
ni:调整nice时间
id:空闲
wa:等待IO时间
hi:硬中断
si:软中断(模式切换)
st:虚拟机偷走的时间
top 内置选项
排序:
P:以占据的CPU百分比,%CPU默认排序
M:占据内存百分比,%MEM
T:累积占据CPU时长,TIME+
首部信息显示:
uptime信息: l命令
tasks及cpu信息: t命令
cpu分别显示: 1 (数字)
memory信息: m命令
退出命令: q
修改刷新时间间隔: s 默认三秒,不要太快。
终止指定进程: k
保存文件: W
top命令行选项:
-d #: 指定刷新时间间隔,默认为3秒
-b: 全部显示所有进程
-n #: 刷新多少次后退出
-------------htop命令: EPEL源,推荐使用,里面有很多内置选项
选项:
-d #: 指定延迟时间;
-u UserName: 仅显示指定用户的进程
-s COLUME: 以指定字段进行排序
子命令:
s: 跟踪选定进程的系统调用
l: 显示选定进程打开的文件列表
a:将选定的进程绑定至某指定CPU核心
t: 显示进程树
今天的分享就到这了,下周再继续分享啦~~~~~~~~