进程管理
进程管理
进程概述
# 什么是进程
进程就是一个正在运行的程序
# 程序与进程的区别
进程是动态概念,具有生命属性,无法长期存放在系统中
程序是静态概念,代码的集合,可以长期存放在系统中
# 进程的生命周期
接收任务-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 显示该进程的完整描述信息
进程管理命令 top
top
# 第一行:系统相关
top - 21:48:01 up 5:16, 2 users, load average: 0.00, 0.01, 0.05
top :命令
21:48:01 up :当前系统时间
up 5:16, :该服务器运行时间
2 users :当前登录的用户数量
load average: 0.00, 0.01, 0.05 :系统平均负载
0.01 :1分钟
0.02 :5分钟
0.05 :15分钟
# 第二行 :进程状态
Tasks: 97 total, 2 running, 95 sleeping, 0 stopped, 0 zombie
97 total :当前系统所有进程数量
2 running :处于R状态 ,正在运行的进程数
95 sleeping :处于S状态 ,sleep状态进程数
0 stopped :处于T状态 ,后台挂起暂停状态
0 zombie :处于Z状态 ,僵尸进程数量
# 第三行 :CPU百分比
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
us :用户进程占cpu百分比(用户态)
sy :系统进程占cpu百分比(内核态)
ni :优先级高的进程占cpu百分比
id :cpu空闲度
wa :等待状态进程占用cpu百分比
hi :硬中断占用百分比
si :软中断占用百分比
st :虚拟化技术占用百分比
# 第四行 :物理内存
KiB Mem : 995892 total, 710996 free, 132928 used, 151968 buff/cache
995892 total :总内存数
710996 free :空闲的虚拟内存数
132928 used :已使用的虚拟内存数
151968 buff/cache :可以用的虚拟内存数
# 第五行 :swap虚拟内存
KiB Swap: 1048572 total, 1048572 free, 0 used. 693160 avail Mem
1048572 total :总共的虚拟内存数
1048572 free :空闲的虚拟内存数
0 used :已使用的虚拟内存数
693160 avail Mem :可用的虚拟内存数
什么是中断
中断是系统用来影响硬件设备请求的一种机制,他会打断进程的正常调度和执行,然后调用内核中的中断处理程序来影响设备的请求
为了解决中断处理程序执行过长和丢失中断的问题,Linux将中断处理过程分为两阶段:
第一阶段 : 用来快速处理中断,它在中断禁止模式下运行,主要处理和硬件紧密相关工作
第二阶段 :用来延迟处理第一阶段未完成的工作,通常以内核线程的方式运行
# 言简意赅
第一阶段:直接处理硬件请求,也就是我们常说的硬中断,特点是快速执行
第二阶段:由内核触发该请求,也就是常说的软中断,特点是延迟处理
# linux软中断与硬中断小结
1.linux中断处理程序分为上半部和下半部
上半部对应硬中断,用来快速处理
下半部对应软中断,用来异步处理上半部未完成的工作
top命令用法
top
-d :指定更新的时间
-p :只查看指点pid的进程
-u :指定相关用户
-b :将top内容保存到文件中
-n :指定次数
top 常见指令
h :查看帮出
z :高亮显示
1 :显示所有cpu的负载
s :设置刷新时间
b :高亮显示处于R状态的进程
M :按内存使用百分比排序输出
P :按cpu使用百分比排序输出
R :对排序进行反转
f :自定义显示字段
k :kill掉指点PID进程
W :保存top环境PID进程
q :退出
PID : 进程ID号
USER :该进程的用户
PR NI :该进程的优先级
VIRT :虚拟内存占用空间
RES :物理内存占用空间
SHR :共享内存占用空间
S :进程状态
%CPU :占用cpu百分比
%MEM :内存占用百分比
TIME+ :运行时间
COMMAND :进程的运行命令
常见指令举例
- 查看帮助
- z 高亮显示
- 1 显示所有cpu的负载
- f 自定义显示字段
进程的信号管理
kill -l :列出所有信息名称
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
# 常见的信息列表
数字信息 信息别名 作用
1 HUP 挂起信号,可以将进程重新加载
2 INT 中断信号,可以将进程结束
3 QUIT 退出进程
9 KILL 直接结束进程,不被进程捕获
15 TERM 进程终止,kill默认信号
18 CONT 被暂停的进程在后台恢复运行
19 STOP 暂停进程
20 TSTp 用户停止请求,暂停进程
kill命令发送信号
killall :杀掉指定服务的使用进程
pkill :杀掉指定进程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!