当前位置: 首页 > news >正文

linux进程

exit()函数正常结束进程

man ps

aux 是在使用 ps 命令时常用的一个选项组合,用于显示系统中所有进程的详细信息。aux 不是 ps 命令的一个正式选项,而是三个选项的组合:a, u, 和 x。这三个选项分别代表不同的含义:1. a:•显示所有进程,包括其他用户的进程。•如果没有 a 选项,ps 默认只显示当前用户的进程。2. u:•以用户友好的格式显示进程信息,例如显示用户名而非 UID。•这个选项通常用于提供更易读的输出格式。3. x:•显示没有控制终端的进程。•有些进程可能没有关联的终端,这个选项确保这些进程也被列出。使用 ps aux 的效果当你使用 ps aux 时,你会得到系统中所有进程的详细列表,包括以下信息:•USER:进程所有者的用户名。•PID:进程标识符。•%CPU:进程占用的 CPU 百分比。•%MEM:进程占用的内存百分比。•VSZ:进程的虚拟内存大小。•RSS:进程的常驻集大小(实际占用的物理内存)。•TTY:与进程相关的终端。•STAT:进程的状态(例如 R 表示运行,S 表示睡眠,Z 表示僵尸状态等)。•START:进程启动的时间。•TIME:进程占用 CPU 的时间。•COMMAND:进程的命令行。

ps 是一个在 Unix 和类 Unix 系统(如 Linux 和 macOS)中常用的命令行工具,用于报告当前系统中进程的状态信息。ps 命令可以帮助用户查看系统中正在运行的进程列表,这对于系统管理和故障排查非常有用。process stat

ps -elf 是一个在 Unix 和类 Unix 系统(如 Linux 和 macOS)中用于显示进程信息的命令行工具 ps 的一个特定选项组合。这个命令用于列出所有进程的详细信息,并以长格式(long format)输出。选项解释•-e:显示所有进程,包括其他用户的进程。•-l:以长格式(long format)显示进程信息,提供更多详细信息。•-f:显示完整的命令行,包括进程的父进程 PID 和执行的命令。

fork创建子进程

输出重定向

killall -9 a.out

删掉父进程,子进程由前台运行转为后台运行,会被init(64位)收养

删掉子进程,会转变为僵尸态,当父进程结束了,子进程会瞬间被init收养并查看销毁

并发: 某一时刻,同时发生  
正在执行的程序 ---进程 (动态)
程序 ----加载到内存去运行--- 进程
进程是 程序运行的实体。

进程:(进行中的程序)-正在运行的程序 (动态的) ---内存 
程序的一次执行过程!
程序 -- a.out (可执行程序) ---静态的 

程序源代码 
程序 加载 到内存 运行起来 成为了 进程。 
程序 ---> ./a.out ----> 进程 
栈 
堆 
静态区 
字符串常量区 
代码区

cpu的性能 
操作系统  //多道程序 //单道程序

   程序1->|
   程序2->|--- [CPU]--> 
   程序3->|

   进程1->| 4G空间 
   进程2->|--- [CPU]--> 
   进程3->|
  //CPU --- 单核的CPU 
  //宏观并行 微观串行 
  //并发 --- 同一时刻 同时发生   
  进程概念:
  描述 记录 程序运行过程中的 动态信息!

  一个程序 可以 对应到多个进程  

 程序 变成 进程?
  [栈            ]
  [堆            ]    
  [静态区(全局区)] //data --已初始化的 全局变量 或 静态变量 
                   //bss  --未初始化的 全局变量 或 静态变量
  [字符串常量区  ]
  [代码区        ] //text (正文) --代码段
    ./a.out -----> 进程 (开辟的)
并发: 某一时刻,同时发生  
正在执行的程序 ---进程 (动态)
程序 ----加载到内存去运行--- 进程
进程是 程序运行的实体。
程序中有啥:
程序 = 数据+代码  
linux:
程序 
bss  --- 未初始化的数据  |           
data --- 初始化了的数据  |  静态区 | ---数据 
text --- 正文段(代码段)

程序 
./a.out 

进程: (占用 cpu ,内存相关的资源 ,IO资源(屏幕,键盘))

栈 
堆   //程序运行过程中动态的内存   
bss  --- 未初始化的数据  |           
data --- 初始化了的数据  |  静态区 | ---数据 
text --- 正文段(代码段)


进程是程序执行和资源管理的最小单位。//? ---线程

32位的平台 
4G空间 (4G的虚拟地址空间(逻辑上的))

用户空间   [0-3G]  //用户       3G
---------------------
内核空间   [3G-4G] //操作系统   1G 
mmu (Memory Management Unit)    
为啥需要进程?
管理 
51
cpu 

操作系统来说?
   |
   V
   CPU (分时 + 多核 )
管理这些运行的程序(进程)
微观串行
宏观并
linux 怎么管理进程?
PCB (process control block)//账本 信息登记表 
程序角度:

task_struct {
    PID,             //进程标识符
    PPID,            //父进程ID号  parent 
    当前工作路径     //chdir
    umask            //0002
    进程打开的文件列表 //文件IO中有提到
    信号相关设置       //处理异步io, ---段错误
    用户id,组id
    进程资源的上限
}
户口信息: //父子关系 
进程的一生:
创建进程
执行任务  
  (1).跟父进程相同的任务 比如: 淘宝           fork 
  (2).有自己的任务要做   比如: shell执行命令  fork + exec 
进程结束 
  exit()
  (1).孤儿进程 --- 没有父亲  
  (2).僵尸进程 --- 有父亲,但是自己先挂了 


1.进程的含义?
    进程是一个程序执行的过程,会去分配内存资源,cpu的调度
    
    pcb  是一个结构体,Process Control Block              
    print circuit board
    
   
    struct task_struct  //
    {
        PID,进程标识符
        PPID,parent id (父亲)
        
        当前工作路径   chdir
        umask  0002
        进程打开的文件列表  文件IO中有提到
        信号相关设置 处理异步io,
        用户id,组id
        
        进程资源的上限
        ulimit -a,显示资源上限。
    }
    
    //一个程序运行之后(进程)
    默认打开了三个文件
    stdin 
    stdout 
    stderr 
    
2.进程和程序的区别?
    程序:静态
        存储在硬盘中代码,数据的集合
    进程:动态
        程序执行的过程,包括进程的创建、调度、消亡
        .c ----> a.out-----> process(pid)
        
    1)程序是永存,进程是暂时的
    2)进程有程序状态的变化,程序没有
    3)进程可以并发,程序无并发
    4)进程与进程会存在竞争计算机的资源
    5)一个程序可以运行多次,变成多个进程
    
    一个进程可以运行一个或多个程序内存的分布
    0-3G,是进程的空间,
    3G-4G是内核的空间,虚拟地址
    虚拟地址 *  物理内存和虚拟内存的地址 映射表 1page=4k


进程分类:
1、交互式进程    shell进程
2、批处理进程    shell脚本  .bat 
3、守护进程     (后台进程)  //前台进程  

man ps  /state 
进程的一生:    (linux里面进程的状态7种)
       
       D    uninterruptible sleep (usually IO)
       R    running or runnable   (on run queue) ---就绪队列中
       S    interruptible sleep   (waiting for an event to complete)
       T    stopped(暂停态), 
            either by a job control signal or because it is being traced.
       *W    paging (not valid since the 2.6.xx kernel)
       *X    dead (should never be seen)
       Z    defunct ("zombie") process, terminated but not reaped(收尸) by its parent.    
4.进程的状态:
    3个状态,就绪→执行态→阻塞(等待,睡眠)基本操作系统
    linux中的状态,运行态,睡眠态,僵尸,暂停态。
    
5.进程的调度
    内核主要功能之一就是完成进程调度

    宏观并行
    微观串行

6.查询进程相关命令
    1.ps aux | grep 进程名 

    查看进程相关信息

        1.就绪态、运行态    R
        2.睡眠态、等待态    
            可唤醒等待态    S
            不可唤醒等待态    D
        3.停止态    T
        4.僵尸态    Z
        5.结束态    

    2.top
    根据CPU占用率查看进程相关信息

    3.kill和killall发送一个信号
    kill PID
    发送信号+PID对应的进程,默认接收者关闭
    
    kill -9 进程PID号 
    kill -l //查看信号列表 
    killall -9 进程名
    发送信号 进程名对应的所有进程
    killall a.out //通过 进程名 发信号 
        
    kill 信号编号 进程ID 
    

相关文章:

linux进程

exit()函数正常结束进程 man ps aux 是在使用 ps 命令时常用的一个选项组合,用于显示系统中所有进程的详细信息。aux 不是 ps 命令的一个正式选项,而是三个选项的组合:a, u, 和 x。这三个选项分别代表不同的含义&#…...

PRVF-4037 : CRS is not installed on any of the nodes

描述:公司要求替换centos,重新安装ORACLE LINUX RAC的数据库做备库,到时候切换成主库,安装Linux7GRID 19C 11G Oracle,顺利安装grid 19c,安装11G数据库软件的时候检测报如题错误:**PRVF-4037 …...

整理 酷炫 Flutter 开源UI框架 FAB

flutter_villains 灵活且易于使用的页面转换。 项目地址:https://github.com/Norbert515/flutter_villains 项目Demo:https://download.csdn.net/download/qq_36040764/89631324...

Unity 编写自己的aar库,接收Android广播(broadcastReceiver)并传递到Unity

编写本文是因为找了很多文章,都比较片段,不容易理解,对于Android新手来说理解起来不友好。我这里写了一个针对比较小白的文章,希望有所帮助。 Android端 首先还是先来写Android端,我们新建一个Android空项目&#xf…...

Mysql cast函数、cast用法、字符串转数字、字符串转日期、数据类型转换

文章目录 一、语法二、示例2.1、复杂示例 三、cast与convert的区别 CAST 函数是 SQL 中的一种类型转换函数,它用于将一个数据类型转换为另一个数据类型,这篇文章主要介绍了Mysql中Cast()函数的用法,需要的朋友可以参考下。 Mysql提供了两种将值转换成指…...

微信小程序开发之组件复用机制

新建复用文件,另外需要注册 behavior 例如: 在behavior.js文件中写入方法,并向外暴露出去 写法一: module.exportsBehavior({data: {num: 1},lifetimes: {created() {console.log(1);}} })写法二: const behavior …...

数据结构--线性表

数据结构分类 集合 线性结构(一对一) 树形结构(一对多) 图结构(多对多) 数据结构三要素 1、逻辑结构 2、数据的运算 3、存储结构(物理结构) 线性表分类 1、顺序表 2、链表 3、栈 4、队列 5、串 线性表--顺序表 顺序表的特点 顺序表的删除和插入…...

深入探针:PHP与DTrace的动态追踪艺术

标题:深入探针:PHP与DTrace的动态追踪艺术 在高性能的PHP应用开发中,深入理解代码的执行流程和性能瓶颈是至关重要的。DTrace,作为一种强大的动态追踪工具,为开发者提供了对PHP脚本运行时行为的深入洞察。本文将详细介…...

黑龙江日报报道第5届中国计算机应用技术大赛,赛氪提供赛事支持

2024年7月17日,黑龙江日报、极光新闻对在哈尔滨市举办的第5届中国计算机应用技术大赛全国总决赛进行了深入报道。此次大赛由中国计算机学会主办,中国计算机学会计算机应用专业委员会与赛氪网共同承办,吸引了来自全国各地的顶尖技术团队和选手…...

【计算机网络】LVS四层负载均衡器

https://mobian.blog.csdn.net/article/details/141093263 https://blog.csdn.net/weixin_42175752/article/details/139966198 《高并发的哲学原理》 (基本来自本书) 《亿级流量系统架构设计与实战》 LVS 章文嵩博士创造 LVS(IPVS) 章⽂嵩发…...

Java 守护线程练习 (2024.8.12)

DaemonExercise package DaemonExercise20240812;public class DaemonExercise {public static void main(String[] args) {// 守护线程// 当普通线程执行完毕之后,守护线程没有继续执行的必要,所以说会逐步关闭(并非瞬间关闭)//…...

C#小桌面程序调试出错,如何解决??

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收…...

Seatunnel Mysql数据同步到Mysql

环境 mysql-connector-java-8.0.28.jar、connector-cdc-mysql 配置 env {# You can set SeaTunnel environment configuration hereexecution.parallelism 2job.mode "STREAMING"# 10秒检查一次,可以适当加大这个值checkpoint.interval 10000#execu…...

Java Web —— 第五天(请求响应1)

postman Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件 作用:常用于进行接口测试 简单参数 原始方式 在原始的web程序中,获取请求参数,需要通过HttpServletRequest 对象手动获 http://localhost:8080/simpleParam?nameTom&a…...

【LLMOps】手摸手教你把 Dify 接入微信生态

作者:韩方圆 "Dify on WeChat"开源项目作者 概述 微信作为最热门即时通信软件,拥有巨大的流量。 微信友好的聊天窗口是天然的AI应用LUI(Language User Interface)/CUI(Conversation User Interface)。 微信不仅有个人微信,同时提供…...

Ftrans文件摆渡方案:重塑文件传输与管控的科技先锋

一、哪些行业会用到文件摆渡相关方案 文件摆渡相关的产品和方案通常用于需要在不同的网络、安全域、网段之间传输数据的场景,主要是一些有核心数据需要保护的行业,做了网络隔离和划分。以下是一些应用比较普遍的行业: 金融行业:…...

LaTeX中的除号表示方法详解

/除号 LaTeX中的除号表示方法详解1. 使用斜杠 / 表示除号优点缺点 2. 使用 \frac{} 表示分数形式的除法优点缺点 3. 使用 \div 表示标准除号优点缺点 4. 使用 \over 表示分数形式的除法优点缺点 5. 使用 \dfrac{} 和 \tfrac{} 表示大型和小型分数优点缺点 总结 LaTeX中的除号表…...

DID、DID文档、VC、VP分别是什么 有什么关系

DID(去中心化身份) 定义:DID 是一种去中心化的唯一标识符,用于表示个体、组织或设备的身份。DID 不依赖于中央管理机构,而是由去中心化网络(如区块链)生成和管理。 用途:DID 允许用…...

网络安全应急响应

前言\n在网络安全领域,有一句广为人知的话:“没有绝对的安全”。这意味着任何系统都有可能被攻破。安全攻击的发生并不可怕,可怕的是从头到尾都毫无察觉。当系统遭遇攻击时,企业的安全人员需要立即进行应急响应,以将影…...

Qt数据和视图分离——中MCV和MVVM

智能指针 一、背景知识二、命令式编程 vs 声明式编程2.1 命令式编程(Imperative Programming)2.2 声明式编程(Declarative Programming) 三、 MVC(Model-View-Controller)3.1 模型(Model)3.2 视图&#xff…...

重定义变量类型:如#define FLOAT float和typedef float FLOAT的区别

在 C 或 C 中, #define 和 typedef 都可以用来为类型或值创建别名,但它们之间存在一些关键的区别: 预处理指令 ( #define ): #define 是预处理器指令,用于定义宏。 当编译器处理源代码时,预处理器会先运行&#…...

Qt 使用阿里矢量图标库

前言 阿里矢量图标库非常好用,里面有各种丰富的图标,完全免费,还支持自定义图标,还可以将图标打包到一个项目中,使用起来非常方便。 第一步: 打开阿里矢量图标库 第二步: 搜索图标&#x…...

仓颉语言运行时轻量化实践

杨勇勇 华为语言虚拟机实验室架构师,目前负责仓颉语言静态后端的开发工作 仓颉语言运行时轻量化实践 仓颉Native后端(CJNative)是仓颉语言的高性能、轻量化实现。这里的“轻量化”意指仓颉程序运行过程中占用系统资源(内存、CPU等…...

深入理解Python中的subprocess模块

目录 subprocess模块简介常用函数执行外部命令管道通信子进程管理错误处理实际应用示例最佳实践 subprocess模块简介 subprocess模块是Python标准库的一部分,提供了一个跨平台的方法来生成新进程、连接其输入/输出/错误管道,并获取其返回码。该模块旨…...

从零开始搭建 EMQX 集群压测框架

从零开始搭建 EMQX 集群压测框架 架构 在设计以EMQX为中心的MQTT消息队列集群压力测试框架时,我们采用微服务架构模式。EMQX作为消息队列的核心,负责处理MQTT协议的消息发布和订阅。Nginx作为EMQX的反向代理,负责负载均衡和SSL/TLS终端。MQT…...

ArkUI基本介绍

ArkUI:提供HarmonyOS应用UI开发框架,几件开发、精致体验、跨设备/跨平台。 ArkUI(方舟UI框架)为应用的UI开发提供了完整的基础设施,包括简洁的UI语法、丰富的UI功能(组件、布局、动画以及交互事件&#xff…...

vue2+OpenLayers 天地图上打点并且显示相关的信息(2)

上次是在地图上打点 这次鼠标移动在图标上面显示相关的信息 首先有两个事件 鼠标移入 和 鼠标移出事件 pointermove pointerout 鼠标放上去之前 放上去后 代码如下 <template><div class"container"><div id"vue-openlayers" class&quo…...

c++继承(二)

一、友元函数的继承 友元函数不能被继承&#xff0c;就像爸爸的朋友不是你的朋友&#xff0c;如果要有友元函数&#xff0c;在子类重新定义一个。 二、静态成员的继承 静态成员的继承仍然是那个成员&#xff0c;普通成员的继承是不同的。 父类的静态成员属于当前类&#xf…...

低代码开发的崛起:机遇与挑战

近年来&#xff0c;“低代码”开发平台的迅速崛起&#xff0c;已经成为IT行业中不可忽视的趋势。这些平台承诺让非专业人士也能快速构建应用程序&#xff0c;通过减少代码编写的需求&#xff0c;大幅提高开发效率。对于许多企业而言&#xff0c;低代码开发工具成为了一个加速数…...

Json-JacksonUtils工具类

为了创建一个通用的 Jackson 工具类,我们可以定义一个名为 JacksonUtils 的工具类,该类将提 供多种方法来支持不同类型的 JSON 转换需求。下面是一个示例实现,包括基本的 JSON 到 Java 对象的转换、Java 对象到 JSON 的转换、以及更复杂的类型如 CommonResult 的转换。 C…...