day8.5
day8.5
进程管理
进程概述
# 什么是进程?
就是一个运行的程序
# 程序与进程的区别
进程是动态概念,是有生命周期的,无法长期存放在系统中
程序是静态概念,代码集合,可以长期存放在系统中
# 进程的生命周期
接收任务-fork子进程-子进程处理任务-父进程等待
正常结束任务
非正常结束任务
-产生僵尸进程
-产生孤儿进程
# 什么是僵尸进程
子进程先结束,父进程没有及时回收子进程占用资源
# 产生的原因
子进程的结束和父进程的运行时异步的,父进程永远不知道子进程什么时候结束。
子进程结束时,父进程繁忙来不及wait子进程,则会导致变成僵尸进程。
# 什么是孤儿进程
父进程先结束,子进程没有父进程的管理
# 产生的原因
子进程的结束和父进程的运行时异步的,父进程永远不知道子进程什么时候结束。
当父进程正常完成工作或是其他原因被终止,则会导致,子进程变成孤儿进程
监控进程的状态
进程状态管理命令-ps
# 语法
PS [选项] [参数]
# 常用选项组合
[root@28technicians ~]# ps -ef
[root@28technicians ~]# ps aux
a:查看所有与终端相关的进程,有终端发起的进程
u:显示进程管理用户
x:查看所有与终端无关的进程
进程解析
[root@28technicians ~]# ps aux|grep nginx
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 7243 0.0 0.1 46132 1944 ? Ss 14:15 0:00 nginx: master process nginx
USER:该进程的管理用户
PID:进程号
%CPU:该进程站占用CPU百分比
%MEM:该进程占用内存的百分比
VSZ:该进程占用虚拟内存的大小
RSS:该进程占用物理内存的大小
TTY:
?:由内核发起的进程
tty:机器上的终端进程
pts/N:远程连接工具的终端进程
STAT:进程运行的状态
D:无法中断的休眠状态
R:正在运行的状态
S:处于休眠的状态进程
Z:僵尸进程
+:在前台运行
------------------------
T:暂停或被追踪的状态
W:交换内存的进程
X:死掉的进程
<:优先级高的进程
N:优先级低的进程
L:有些数据页被锁进内存的进程
s:父进程,他下面有子进程
l:以线程的方式运行
|:存在多进程的进程
START:进程开启的时间
TIME:该进程占用CPU的时间
COMNAND:进程的名字或命令
[]:内核态进程
没[]:用户态进程
如果后台有被暂停的进程
# 查看所有被暂停的进程
[root@28technicians ~]# jobs
[1]+ Stopped ping baidu.com
bg:让暂停的程序运行起来,后面加数字,就可以运行第几个被暂停的进程
fg:是把后台暂停的进程,调到前台运行,后面加数字,就可以将第几个进程调到前台运行
PS命令的用法
# 1.根据%CPU进行排序
[root@28technicians ~]# ps aux --sort %cpu
[root@28technicians ~]# ps aux --sort %mem
# 2.自定义显示字段
o:自定义显示字段
[root@28technicians ~]# ps axo pid
# 3.显示子进程和父进程的关系
[root@28technicians ~]# ps auxf|grep nginx
# 4.查看进程的pid
[root@28technicians ~]# pgrep nginx
7243
7294
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了