目录
1.systemd管理的资源对象以“单元unit”为单位,“单元”分为3类
一、进程占用的内存资源
1.分配的内存、地址、空间;
2.安全属性,如进程的权限信息;
3.进程的状态、子线程和子线程的状态;
二、进程的系统环境
本地局部变量;
调度上下文;
分配系统资源,如网络端口
三、进程一直在切换
1.进程之间一直在切换(以时间片为单位),切换速度很快;
2.调度上下文:这个进程,最近一次切换前记录的状态
四、父进程和子进程
1.最顶级的父进程是systemd,类似于文件系统的"根目录/";
2.父进程通过fork方式复制自己的地址空间来创建子进程;
3.子进程有2个属性,pid是自己的唯一标识,ppid是父进程的pid;
4.父进程创建、回收子进程的过程

fork方式创建子进程后,父进程进入等待状态;
子进程执行;
子进程结束,释放相关的环境、资源,并向父进程发送回收信号。父进程调用wait()、waitpid()回收子进程环境、资源;
僵尸进程:是子进程结束这一步出现问题造成的。子进程其他的环境、资源都释放了除了pid,发送信号后pid就没被父进程回收。结果我们ps查看进程时,显示有这个进程号但没实际进程,就像僵尸一样;
孤儿进程:程序执行一般是子进程先结束然后父进程才结束。孤儿进程是指父进程先结束了,子进程还没结束,然后子进程自动移交给systemd统一管理了,此时的子进程就叫孤儿进程
五、进程状态

runnable:等待状态,即处于等待cpu调用的状态(电脑卡、负载高,就是因为CPU一直不调用,一直处于runnable状态,所以就表现为卡起了)
running:分2种状态,内核级别(要和硬件打交道:进程先调用内核接口,然后内核控制硬件)、用户级别
supend、resume:暂停、恢复
sleeping:等待用户输入、或等待数据返回的状态
exit:退出状态
zombie:僵尸状态

六、查看进程
1.ps -ef 列出所有进程
![]()
uid:用户名
pid:进程pid(1是systemd)
ppid:父进程(0是系统内核进程)
stime:进程从什么时候开始运行的
tty:哪个控制台创建的进程。?表示开机时就创建的进程
cmd:[]中括号引起来的是 系统内核进程
2.ps -lax 列出所有进程
![]()
pri:优先级
NI:nice值。值越大,优先级越高
VSZ:进程运行时申请的内存大小
RSS:实际运行的内存大小
STAT:进程当前状态(S—睡眠、Ss—进程为父进程且处于睡眠状态、SN—进程优先级很低且处于睡眠状态)/*第一个字符代表状态,后面为状态补充说明,N表示进程优先级很低,s表示进程为父进程,+表示为前台进程而非守护进程、还有很多状态,不知道含义,可以man ps,然后筛选出STAT去看*/
3.ps aux列出所有进程
![]()
TIME:进程总共占用cpu执行了多长时间(单位秒,0表示不足1秒,或者从创建后一直在等待没被调用过)
4.树形列出所有进程
ps -ef 、ps -wxf (树形显示父子进程,和他们的进程信息)、pstree (树形结构显示所有族谱进程)
pstree 【选项】【pid/user】
-c :线程也打印出来
- pid:只显示此pid的进程
- user:只显示此user的进程
七、作业job(又叫任务task)(用来查看管理进程)
1.查看作业、作业的进程
jobs -- 列出当前shell终端运行的作业(即程序或命令)
+代表最近一个运行的命令
-代表最近一个的运行的命令的上一个命令
显示当前终端所有作业的进程信息:ps j
本文深入讲解Linux进程的各个方面,包括内存占用、系统环境、进程切换、父进程与子进程的关系、进程状态及查看方法。介绍了作业job的管理,如查看、后台运行、暂停与恢复,以及nohup命令。探讨了信号的定义、来源、分类和使用,以及如何通过kill命令发送信号。详细阐述了实时监控进程的top工具。最后,重点讨论了守护进程systemd,包括其作为顶级守护进程的角色,以及如何通过systemctl管理服务和单元。

最低0.47元/天 解锁文章
2025

被折叠的 条评论
为什么被折叠?



