进程相关概念
内核的功能
进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等。
process
进程,正在运行中的程序的一个副本,是被加载到内存中的指令集和。
- PID:进程ID,标记进程。
- init: linux中有一个总进程init,这个是第一个进程,其他进程都由这个总进程创建。
进程优先级
- 系统优先级(0–139):数字越小,优先级越高。
- 实时优先级(99–0):值越大,优先级越高。静态优先级
- nice(-20–19):对应系统的100–139 。动态优先级
- Big :时间复杂度,用户和规模的关系。
LRU算法:淘汰不用时间最长的数据。
进程的执行需要环境,我们称之为上下文(context),也就是包含一些进程的属性(进程的执行者,PID,selinux机制,组身份)linux内核的进程工作方式是:抢占式多任务(也就是分时操作系统)。
进程类型
- 守护进程:daemon,在系统引导过程中启动的进程,和终端无关进程。系统启动后自动加载到内存中在后台运行,也就是后台进程。
- 前台进程:跟终端相关,通过终端启动的进程。关闭终端就会中断。
进程状态
运行态 running
就绪态 ready
睡眠态:可中断 interruptable
不可中断 UNinterruptable
停止态:stopped 暂停于内存,但不会被调度,除非手动启动
僵死态:zombie 结束进程,父进程结束前,子进程不关闭,这种进程已经处于死状态,没法再次杀死,只能进行重启系统才可以释放内存。
系统管理工具
进程的分类
- CPU-bound :CPU密集型,主要使用CPU进行计算或逻辑判断的进程
- I/O-bound :IO密集型,主要使用内存和硬盘进行读写的进程。
Linux系统状态的查看及管理工具
pstree ps pidof pgrep top htop glance pmap vmstat dstat kill pkill job bg fg nohup
pstree
将进程以树状结构显示,子进程为叶子节点,其中用{ } 括起来的是线程。线程依附于进程,不能独立存在,进程是独立内存空间的,线程是可以共享内存空间的,线程属于轻量级的。
知识小扩展: 可以将
httpd
服务的进程改为线程,一般httpd
服务是新建一个进程为用户提供服务,我们可以将其使用线程来为用户提供服务,这样就可以节省内存资源。可以修改如下文件:vim /etc/sysconfig/httpd
将配置文件中的#HTTPD=/usr/sbin/httpd.worker
前的#
去掉,使该配置生效,重启服务就可以了:service httpd restart
ps
报告当前进程的快照(所谓的快照也就是当前瞬间的状态)
Linux中各个进程的相关信息都保存在/proc/目录下,对应各个进程PID的文件夹,里面有进程的所有详细信息。
- 支持三种选项:
- UNIX选项 如-A -e 加-的选项风格
- BSD选项 如a 不加-的选项风格
- GNU选项 如–help –这种长格式风格
ps使用不同风格的选项显示结果是不同的,拿ps -a 这个例子来说,
* ps a BSD风格,显示比较详细
* ps -a UNIX风格,显示不详细。这个是一个小小的区别。
选项:默认显示当前终端中的进程
• a 选项包括所有终端中的进程
• x 选项包括不链接终端的进程,也就是包括后台(守护)进程
• u 选项显示进程所有者的信息
• f 选项显示进程的父进程,同时显示父进程的PPID
• k|–sort 属性 对属性排序
• o 属性… 选项显示定制的信息 ,后可接以下的参数,指定显示特定的信息,该选项必须放在所有选项的最后,紧跟参数。
pid、comm、%cpu、%mem、state、VSZ、RSZ、tty、euser、ruser
对于带有suid权限的二进制命令来说,该二进制文件属于A,当另一个B用户执行该二进制文件的时候,这个命令的生效者是A,而命令的发起者是B |
- 参数的解释:
- VSZ: Virtual memory SiZe,虚拟内存集,线性内存
- RSS: ReSident Size, 常驻内存集
- ni: nice值
- pri: priority 优先级
- psr: processor CPU编号
- rtprio: 实时优先级
- STAT:进程状态
- R:running
- S: interruptable sleeping
- D: uninterruptable sleeping
- T: stopped
- Z: zombie
- +: 前台进程
- l: 多线程进程
- L:内存分页并带锁
- N:低优先级进程
- <: 高优先级进程
- s: session leader,会话(子进程)发起者
常用组合
aux
auo
-ef
> ps -C commod 可显示某一命令的进程信息,-C 就是指command
- 进程优先级
- 进程优先级调整:
- 静态优先级:100—139
进程默认启动时的nice 值是0,优先级为120
只有root用户才能降低nice值(提高优先级)
nice 命令
nice -n -10 命令 :指定命令执行的优先级
- 静态优先级:100—139
- 进程优先级调整:
renice 命令:
renice 10 pid 调整正在运行的进程的优先级,重新设置进程优先级(-20—-19)
- 查看进程优先级
ps axo pid,commod,nice 其中axo中的o必须放后面
pgrep
![这里写图片描述](https://img-blog.csdn.net/20170910pgrep 工具:专门支持进程搜索
pgrep [option]-u uid: effective user,生效者
-U uid: real user,真正发起运行命令者
-t terminal: 与指定终端相关的进程,指定终端。
-l: 显示进程名
-a: 显示完整格式的进程名
-P pid: 显示指定进程的子进程
pgrep命令支持正则表达式:
pgrep -a “^vi.*”