进程管理

进程管理

进程概述

# 什么是进程 进程就是一个正在运行的程序 # 程序与进程的区别 进程是动态概念,具有生命属性,无法长期存放在系统中 程序是静态概念,代码的集合,可以长期存放在系统中 # 进程的生命周期 接收任务-fork子进程处理任务-父进程等待 正常结束 非正常结束 	产生僵尸进程 	产生孤儿进程 # 什么是僵尸进程 子进程先结束,父进程没有及时回收子进程的占用资源 # 什么是孤儿进程 父进程先结束,子进程没有父进程的管理 

流程的生命周期

img

1.用户发起请求 2.父进程会fork出子进程,子进程会继承父进程的大部分属性,如:文件描述等,处理任务 3.子进程在处理任务的过程中,父进程是一个wait状态,等待子进程 4.正常结束 5.非正常结束 	僵尸进程 	孤儿进程 

僵尸进程及产生原因

# 僵尸进程 子进程比父进程先结束 父进程没有回收子进程的资源 此时子进程就被称为僵尸进程 # 产生原因 子进程的结束和父进程的运行时异步的 父进程永远不知道子进程什么时候结束 子进程在结束时,父进程繁忙来不及wait子进程就会导致子进程变成僵尸进程 

孤儿进程及产生的原因

# 孤儿进程 父进程比子进程先结束 子进程还在执行任务,没有父进程管理 此时的子进程被称为孤儿进程 # 产生原因 子进程的结束与父进程的运行是异步的 父进程永远不知道子进程什么时候结束 当父进程正常完成工作或其他原因被终止 则会导致子进程变成孤儿进程 

监控进程状态

进程状态管理命令-ps

ps  [选项]  [参数] # 常见参数 ps  -ef ps aux a :查看所有与终端相关的进程,由终端发起的进程 u :显示进程的管理用户 x :查看所有与终端无关的进程 

USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND  USER : 该进程的管理用户 PID :进程号 %CPU :该进程占用CPU的百分比 %MEM :该进程占用内存的百分比 VSZ :该进程占用虚拟内存大小 RSS :该进程占用的物理内存大小 TTY : 	?:由终端发起的进程 	tty :机器上的终端 	pts/n :远程连接工具的终端进程 STAT :进程运行状态 	D :无法中断的休眠状态 (通ID的进程)'''' 	R :正在运行的状态 '''' 	S :处于休眠状态的进程 '''' 	T : 暂停或者被追责的状态 	W :进入交换内存的进程 (swap,centos7见不到) 	X :死掉的进程 (少见) 	Z :僵尸进程 '''' 	< :优先级高的进程 	N :优先级低的进程 	L :有些数据页被锁进内存的进程 	s :父进程,在它下面有子进程 	l :以线程的方式运行 	| :存在多进程的进程 	+ :在前台运行  '''' START : 进程开启的时间 TIME :该进程占用CPU时间 COMMAND :进程的名字或进程的命令 	[] : 内核态进程 	没有[] : 用户态进程 
# 查看所有被暂停的进程 jobs  bg :让暂停的程序运行起来,后面加数字,就可以运行第几个被暂停的进程 (默认是最后一个) fg : 把后台暂停的程序调到前台运行,后面加数字,可以将的n个进程调到前台运行 (默认是最后一个) 

ps命令用法

# 根据%cpu进行排序 ps aux | sort -k 3 ps aux --sort %cpu 

# 自定义显示字段 o :自定义显示字段  ps axo user,%cpu 

# 显示子进程 f :查看子进程和父进程 ps auxf |grep nginx 

# 查看指定进程的pid pgrep :竖向排列 pidof  :横向排列 -l 查看该进程的启动命令 -a 显示该进程的完整描述信息