ps命令
vagrant启动插件disksize异常日志
linux下内核参数net.ipv4.ip_forward作用
linux中进程(process)和线程(thread)区别
1. 定义与本质
- 进程(Process)
进程是操作系统中资源分配的基本单位,是程序执行的一个实例。它包含了程序代码、数据以及运行时的状态信息(如程序计数器、寄存器值等)。每个进程拥有独立的虚拟地址空间,由操作系统通过内存管理单元(MMU)映射到物理内存。 - 线程(Thread)
线程是进程内部的执行单元,是 CPU 调度的基本单位。一个进程可以包含一个或多个线程,线程共享进程的地址空间和资源(如堆、文件句柄等),但每个线程有自己的栈和寄存器上下文,用于独立执行代码。
2. 内存与资源管理
- 进程
进程拥有独立的地址空间,通常包括代码段、数据段、堆和栈等。操作系统通过进程控制块(PCB,Process Control Block)管理进程状态,PCB 记录了进程的标识符(PID)、内存分配、打开的文件等信息。由于内存隔离,进程间通信(IPC)需要通过管道、消息队列或共享内存等机制实现。 - 线程
线程共享进程的地址空间,因此线程间可以直接访问相同的全局变量和堆内存,无需复杂通信机制。但每个线程有独立的栈空间,用于存储局部变量和函数调用信息,同时维护自己的线程控制块(TCB,Thread Control Block),记录线程状态和执行上下文。
ps进程状态
数据库理论中ACID含义
数据库理论中非常核心的概念,用来保证事务(transaction)的可靠性和一致性。
ACID 的四个属性:
原子性 (Atomicity)
原子性确保一个事务是一个不可分割的整体。要么事务中的所有操作都成功执行并提交,要么全部失败并回滚。比如,在银行转账中,从账户 A 扣款和向账户 B 存款必须同时成功,如果扣款成功但存款失败,整个事务会回滚,数据库状态不会改变。**一致性 (Consistency)**
一致性保证事务执行前后,数据库始终处于一种符合规则的合法状态。所有的约束(如主键唯一、数据类型匹配等)、触发器和业务规则都会得到遵守。比如,转账后账户余额不能为负(如果有这样的规则)。隔离性 (Isolation)
隔离性确保多个事务并发执行时,彼此之间不会互相干扰。每个事务的操作在提交前对其他事务是不可见的。比如,两个用户同时修改同一数据时,数据库会通过锁或其他机制保证结果的可预测性。常见的隔离级别包括读未提交、读已提交、可重复读和串行化。**持久性 (Durability)**
持久性保证一旦事务提交,其结果就会永久保存,即使系统崩溃或断电也不会丢失。通常通过日志记录(WAL,Write-Ahead Logging)或类似机制实现。
关系型数据库ddl/dml/dcl区别及例子
在 MySQL(以及其他关系型数据库)中,DDL、DML 和 DCL 是 SQL 语言的三大类操作,它们分别负责不同的功能。
1. DDL(Data Definition Language,数据定义语言)
- 定义:DDL 用于定义和管理数据库结构或模式(schema)的语句,主要涉及数据库对象(如表、视图、索引等)的创建、修改和删除。
- 特点:
- 操作的对象是数据库的结构,而不是数据本身。
- DDL 操作通常是永久性的,执行后会自动提交(隐式提交),无法回滚。
- 常见命令:
CREATE:创建数据库或表,例如CREATE TABLE students (id INT, name VARCHAR(50));ALTER:修改已有对象的结构,例如ALTER TABLE students ADD COLUMN age INT;DROP:删除对象,例如DROP TABLE students;TRUNCATE:清空表数据但保留结构,例如TRUNCATE TABLE students;
- 示例:
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100)
);
k8s中pause pod作用
在 Kubernetes 中,Pause Pod 并不是一个独立的 Pod 类型,而是指每个 Pod 中自动创建的一个特殊容器,通常被称为 pause 容器。它的作用是为 Pod 提供基础设施支持,确保 Pod 中的其他容器能够正常运行。
Pause 容器的作用
共享网络命名空间
- Pause 容器为 Pod 中的所有容器提供了一个共享的网络命名空间(network namespace)。这意味着 Pod 内的所有容器共享同一个 IP 地址、端口空间和网络栈。
- 通过这种方式,Pod 内的容器可以通过
localhost相互通信,而无需关心网络配置的复杂性。
共享存储卷命名空间
- Pause 容器还负责维护 Pod 的挂载卷命名空间(mount namespace)。Pod 中定义的卷(如 PersistentVolume 或 ConfigMap)会先挂载到 pause 容器中,然后其他容器可以通过共享的方式访问这些卷。
- 这确保了 Pod 内容器之间的存储一致性。
作为 Pod 的“占位符”
- Pause 容器是一个始终运行的轻量级进程,它的存在确保了 Pod 在 Kubernetes 集群中有一个稳定的“生命周期”。即使 Pod 中的应用容器崩溃或退出,pause 容器会保持运行,维持 Pod 的状态,避免 Pod 被 Kubernetes 立刻销毁。(新拉起容器,ip不会变)
- 这为控制器(如 Deployment)提供了重新调度或重启应用容器的机会。
简化容器管理
- Pause 容器的存在让 Kubernetes 不需要为每个应用容器单独管理网络和存储,而是将这些基础设施任务集中在一个地方处理,简化了容器编排的复杂度。
ps aux 中rss/vsz 含义
pod类型有那几类
cgroup控制、限制那些资源
cgroup
cgroup(控制组)是Linux内核的一项特性,用于将进程组织成层次结构,并对这些进程进行资源限制、优先级控制、审计和监控。它能够控制和限制CPU时间、内存使用、磁盘I/O等资源的使用,以便更好地管理系统资源。
cgroup 主要有以下几种控制子系统(也叫cgroup controller):
- cpu:控制进程的CPU使用,指定进程的CPU时间分配。可以限制进程占用的CPU核心数、CPU的优先级等。
- memory:限制进程的内存使用,包括物理内存和交换空间。可以指定最大内存使用量,避免进程内存占用过多导致系统崩溃。
- blkio:控制进程的磁盘I/O行为,限制读写操作的速率、优先级等。
- net_cls:用于网络流量控制,通过指定流量标识符(Class ID),限制或优先处理某些网络流量。
- devices:控制进程对设备的访问权限,可以限制某些设备的使用,确保进程不会对设备进行无关操作。
- freezer:可以冻结某个cgroup中的所有进程,暂停它们的执行,直到再次恢复。
- cpuset:指定进程运行的CPU核心和内存节点。可以将进程绑定到特定的CPU核心或内存节点,避免进程迁移。
- hugetlb:控制进程对大页内存(huge pages)的使用,可以限制进程申请大页内存的数量。
- pids:限制某个cgroup中可以创建的最大进程数,防止进程爆炸式增长。
- rdma:控制进程对RDMA设备的访问。

