Linux的进程
目录
一、进程占用的内存资源
二、进程的系统环境
三、进程一直在切换
四、父进程和子进程
五、进程状态
六、查看进程
1.ps -ef 列出所有进程
2.ps -lax 列出所有进程
3.ps aux列出所有进程
4.树形列出所有进程
七、作业(用来查看管理进程)
1.查看作业、作业的进程
2.后台(守护进程方式)运行作业
3.暂停、恢复作业
4.nohup设置作业无法中断
八、信号(用来控制操作进程)
1.定义
2.来源
3.分类
4.常见的信号
5.如何使用信号,来操作进程?
九、实时监控进程
一、进程占用的内存资源
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 (树形结构显示所有族谱进程)
七、作业(用来查看管理进程)
1.查看作业、作业的进程
jobs -- 列出当前shell终端运行的作业(即程序或命令)
+代表最近一个运行的命令
-代表最近一个的运行的命令的上一个命令
显示当前终端所有作业的进程信息:ps j
2.后台(守护进程方式)运行作业
以后台(守护进程)方式运行作业:
sleep 5000 & --- 执行休眠5000秒这个作业,并且以守护进程的方式后台运行(命令最后加&符号代表以守护进程方式运行)
后台作业改成前台方式:
fg %【作业编号,最左边哪个括号括起来的数字】 ---比如:fg %3 #编号为3的作业
3.暂停、恢复作业
暂停作业并改为后台(守护进程)方式:ctrl+z
暂停状态改为运行状态:bg %3
![]()
4.nohup设置作业无法中断
设置作业进程无法中断:nohup sleep 5000 & --比如我关了当前终端,后台运行的sleep 5000 &属于当前终端的子进程,也应该会中断,但加了nohup就不会中断。如果sleep 5000 &命令有日志打印输出,会保存到当前路径的nohup.out文件里,cat nohup.out就能看到
八、信号(用来控制操作进程)
1.定义
信号指的是传递至进程的软件中断,信号向执行中的程序报告事件
2.来源
错误、或外部事件(如I/O请求、定时器过期),发送信号命令;
键盘输入
3.分类
终止(Term) :意外退出。导致程序立即终止(退出)
核心转储(Core) :正常退出并保存。程序保存内存映像(核心转储),然后终止
停止(Stop) :暂停。导致程序停止执行(暂停),再等待继续(恢复)
4.常见的信号

5.如何使用信号,来操作进程?
键盘输入方式:
Ctrl-z (暂停) ---stop 停止或等待恢复
Ctrl-c (中止) ---term 立即终止并退出
Ctrl-\ (核心转储) ---core 程序保存内存映像,然后终止
发送信号命令:
kill、killall命令可以向进程发送任何信号
(1)过滤筛选,查看进程
pgrep -l -u 【用户名】 #筛选出用户的所有进程
(1)操作单个进程kill
kill-l ---查看可以发送的信号
kill -【信号编码】 【进程PID】
(3)批量操作进程killall、pkill
killall -u 【用户名】 ----杀死用户的所有进程(进程的uid属性与用户一一对应)
pkill -u 【用户名】
pkill -U 【uid】 #杀死指定uid用户的所有进程
pkill -G 【gid】 #杀死指定gid组包含用户的所有进程
九、实时监控进程
top
1.前面部分打印结果:进程总体情况

16:47:08:当前系统时间
7:40:从开机到现在,系统运行的时长
1 users:当前登录系统的用户数量
load average:1.46,0.74,0.29:系统负载。第一个1.46是1分钟前到现在这段时间的负载平均值、第二个0.74是5分钟前的负载平均值、第三个0.29是15分钟前的负载平均值(“负载平均值/CPU物理核心数>1”表示系统繁忙负载高)
tasks:当前系统一共有多少进程
%CPU0:0.3us,0.3sy,0.0ni,99.3id,0.0wa,:第一个CPU物理核心使用情况。us用户进程占用0.3%、sy系统进程占0.3、ni?????、id表示计算CPU空闲进程的计算结果(数字是空闲百分比,数字越大CPU越空闲,负载越低)、wa是IO-wait的简称表示CPU等待磁盘的时间(数字越大磁盘越繁忙)、
%CPU1:第二个CPU物理核心情况
Mib Mem:内存
Mib Swap:内存交换
2.后面部分打印结果:每个进程详细情况

按cpu占用从大到小排序:按P ----存在CPU超过100%的情况,是因为可能有多个CPU(比如2个CPU都用完了就是200%)
按内存占用从大到小排序:按M
交互式操作进程:
- 先按k;
- 会提示输入进程pid号PID to signaL/kill [default pid = 1357]; ---默认pid是1357
- 输入要操作进程的pid,回车(按esc取消);
- 会提示输入指令信号编号Send pid 【pid号】 signal [15/sigterm]; ---默认是15,杀死进程
- 输入信号编号。比如输入15或者不输入,然后回车,就杀死该进程了(按esc取消)
退出top:按q
相关文章:
Linux的进程
目录 一、进程占用的内存资源 二、进程的系统环境 三、进程一直在切换 四、父进程和子进程 五、进程状态 六、查看进程 1.ps -ef 列出所有进程 2.ps -lax 列出所有进程 3.ps aux列出所有进程 4.树形列出所有进程 七、作业(用来查看管理进程) …...
与其焦虑被 AI 取代或猜测前端是否已死, 不如看看 vertical-align 扎实你的基础!!!
与其焦虑被 AI 取代或猜测前端是否已死, 不如看看 vertical-align 扎实你的基础!!! vertical-align 设置 display 值为 inline, inline-block 和 table-cell 的元素竖直对齐方式. 从 line-height: normal 究竟是多高说起 我们先来看一段代码, 分析一下为什么第二行的行高, 也就…...
路由、交换机、集线器、DNS服务器、广域网/局域网、端口、MTU
前言:网络名词术语解析(自行阅读扫盲),推荐大家去读户根勤的《网络是怎样连接的》 路由(route): 数据包从源地址到目的地址所经过的路径,由一系列路由节点组成。某个路由节点为数据包选择投递方向的选路过程。 路由器工作原理 路…...
在全志V851S开发板上进行屏幕触摸适配
1.修改屏幕驱动 从ft6236 (删掉,不要保留),改为下面的 路径:/home/wells/tina-v853-open/tina-v853-open/device/config/chips/v851s/configs/lizard/board.dts(注意路径,要设置为自己的实际路…...
字符串拷贝时的内存重叠问题
字符串拷贝时的内存重叠问题 1.什么是内存重叠 拷贝的目的地址在源地址的范围内,有重叠。 如在写程序的过程中,我们用到的strcpy这个拷贝函数,在这个函数中我们定义一个目的地址,一个源地址,在拷贝的过程中如果内存重…...
告别PPT手残党!这6款AI神器,让你秒变PPT王者!
如果你是一个PPT手残党,每每制作PPT总是让你焦头烂额,那么你一定需要这篇幽默拉风的推广文案! 我向你保证,这篇文案将帮助你发现6款AI自动生成PPT的神器,让你告别PPT手残党的身份,成为一名PPT王者。 无论…...
JVM配置与优化
参考: JVM内存分区及作用(JDK8) https://blog.csdn.net/BigBug_500/article/details/104734957 java 进程占用系统内存过高分析 https://blog.csdn.net/fxh13579/article/details/104754340 Java之jvm和线程的内存 https://blog.csdn.ne…...
电力系统储能调峰、调频模型研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
C++基础之类、对象一(类的定义,作用域、this指针)
目录 面向对象的编程 类的引入 简介 类的定义 简介 访问限定符 命名规则 封装 简介 类的作用域 类的大小及存储模型 this指针 简介 面向对象的编程 C与C语言不同,C是面向对象的编程,那么什么是面向对象的编程呢? C语言编程,规定…...
javaScript---设计模式-封装与对象
目录 1、封装对象时的设计模式 2、基本结构与应用示例 2.1 工厂模式 2.2 建造者模式 2.3 单例模式 封装的目的:①定义变量不会污染外部;②能作为一个模块调用;③遵循开闭原则。 好的封装(不可见、留接口):①…...
【消息中间件】kafka高性能设计之内存池
文章目录 前言实现创建内存池分配内存释放内存 总结 前言 Kafka的内存池是一个用于管理内存分配的缓存区域。它通过在内存上保留一块固定大小的内存池,用于分配消息缓存、批处理缓存等对象,以减少频繁调用内存分配函数的开销。 Kafka内存池的实现利用了…...
创建型模式——单例(singleton)
1. 模式说明 单例模式保证类只有一个实例;创建一个对象,当你创建第二个对象的时候,此时你获取到的是已经创建过的对象,而不是一个新的对象; 1.1 使用场景 共享资源的访问权限;任务的管理类;数…...
算法:迷宫问题
描述 定义一个二维数组 N*M ,如 5 5 数组下所示: int maze[5][5] { 0, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, }; 它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或…...
聊聊并发编程的12种业务场景
前言 并发编程是一项非常重要的技术,无论在面试,还是工作中出现的频率非常高。 并发编程说白了就是多线程编程,但多线程一定比单线程效率更高? 答:不一定,要看具体业务场景。 毕竟如果使用了多线程&…...
MySQL执行顺序
MySQL执行顺序 MySQL语句的执行顺序也是在面试过程中经常问到的问题,并且熟悉执行顺序也有助于SQL语句的编写。 SELECT FROM JOIN ON WHERE GROUP BY HAVING ORDER BY LIMIT执行顺序如下: FROM ON JOIN WHERE GROUP BY # (开始使用别名) SUM # SUM等…...
引领真无线耳机未来趋势,NANK南卡OE骨传导真无线耳机惊艳亮相
传统的蓝牙耳机存在很多问题,例如续航时间短、长期佩戴耳朵会不舒服,甚至影响听力等等。为了解决这些问题,在骨传导领域深耕十多年的南卡品牌推出了这款真无线骨传导耳机——NANK南卡 OE。 NANK南卡OE即将正式上线,这一消息一经宣…...
5款写作神器,帮助你写出5w+爆款文案,好用到哭
我不允许还有文案小白、新手博主不知道这5款写作利器! 每次一写文案就头秃的新媒体工作者,赶紧看过来吧!这5款好用到爆的写作神器,喝一杯咖啡的时间就能完成写作。 我和同事都是用它们,出了很多的爆款,现…...
相交链表问题
给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后&…...
[ubuntu] ax200网卡虚接,导致系统根目录占满而无法进入系统的奇葩问题
20230508,我像往常一样,打开电脑发现根目录满了,报警了,所以按照网上的教程,清理了一下根目录的文件,没想到背后是网卡问题… 文章目录 1.进入终端模式2.查看占用情况3.清理系统log文件3.1 清理/var/log/syslog3.2 清…...
本地字体库的引入方法
本地字体库是指在计算机系统中存储的一组字体文件,通常包含多种字体格式,如TTF、OTF、WOFF等。引入本地字体库可以让用户在使用计算机时可以选择不同的字体,从而提高用户的使用体验。 本地字体库的引入方式有多种,其中比较常用的是…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

