张家港建设局官方网站广州大题小做考研网站



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 
     
