进程管理

2022/5/5 7:13:27

本文主要是介绍进程管理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

进程管理

进程概述

# 什么是进程
进程就是一个正在运行的程序
# 程序与进程的区别
进程是动态概念,具有生命属性,无法长期存放在系统中
程序是静态概念,代码的集合,可以长期存放在系统中
# 进程的生命周期
接收任务-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 显示该进程的完整描述信息





这篇关于进程管理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程