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

相关推荐
川石课堂软件测试4 分钟前
性能测试|docker容器下搭建JMeter+Grafana+Influxdb监控可视化平台
运维·javascript·深度学习·jmeter·docker·容器·grafana
龙哥说跨境12 分钟前
如何利用指纹浏览器爬虫绕过Cloudflare的防护?
服务器·网络·python·网络爬虫
pk_xz1234562 小时前
Shell 脚本中变量和字符串的入门介绍
linux·运维·服务器
小珑也要变强2 小时前
Linux之sed命令详解
linux·运维·服务器
海绵波波1072 小时前
Webserver(4.3)TCP通信实现
服务器·网络·tcp/ip
九河云4 小时前
AWS账号注册费用详解:新用户是否需要付费?
服务器·云计算·aws
Lary_Rock4 小时前
RK3576 LINUX RKNN SDK 测试
linux·运维·服务器
幺零九零零5 小时前
【计算机网络】TCP协议面试常考(一)
服务器·tcp/ip·计算机网络
云飞云共享云桌面6 小时前
8位机械工程师如何共享一台图形工作站算力?
linux·服务器·网络
Peter_chq6 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端