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