Linux 概念
Linux
一切都是文件
dev/sd [a-z] 表示不同的 sata/usb 存储硬件
dev/sda [1-4] 是 MBR 分区表的主要分区或拓展分区 (最多一个)
[5-] 是逻辑分区, 是拓展分区指引的分区
所有文件
/ 根目录, 文件系统起点
/bin 基础用户命令(单用户模式可用)
/boot 内核与引导加载器文件
/dev 设备节点
/dev/null 黑洞, 写即丢, 读即 EOF
/dev/zero 零源, 无限 0 流
/etc 系统配置
/etc/hosts 静态主机映射
/etc/resolv.conf DNS 服务器列表
/etc/passwd 用户账号数据库
/etc/group 用户组数据库
/home 普通用户家目录
/lib 基础共享库与内核模块
/media 自动挂载点(U 盘, 光驱等)
/mnt 手动临时挂载点
/opt 第三方大型软件包
/proc 运行时内核与进程视图
cat /proc/[pid]/status 进程状态快照
ls -l /proc/[pid]/fd 已打开文件列表
cat /proc/[pid]/fdinfo/[fd] 文件描述符详情
cat /proc/cpuinfo CPU 硬件信息
cat /proc/meminfo 内存使用统计
/root 超级用户家目录
/sbin 系统管理命令
/srv 本机对外提供的服务数据
/sys 内核设备模型接口
/sys/class 按功能分类的设备
/sys/block 块设备
/sys/char 字符设备
/sys/devices 物理设备树
/sys/fs 文件系统参数
/sys/kernel 内核可调参数
/sys/module 已加载模块列表
/tmp 临时文件(重启清空)
/usr 只读用户程序与数据
/var 可变数据(日志, 缓存, 队列)
lost+found 每个路径下都有, 恢复文件系统错误
/run 运行时系统信息
GPT 分区表
- 由 LBA1 (兼容 MBR 的启动, 但不记录分区表, 所以还是启动不了, 保护作用), LBA2-33 组成, 每个可以记录四组分区
文件信息
[d, -, l, b, c, s, p] 目录, 文件, 链接文件, 区块设备, 字符设备, 数据接口文件, FIFO 管道文件 (解决多线程冲突)
[rwx]*3, 读 写 修改
- 对于目录来说, r 是读有啥文件, w 是操纵目录结构 (不包括里面的文件内容), x 是能否进入目录工作
隐藏属性
- SUID (Set User ID) 文件在执行时以文件所有者的权限运行
- SGID (Set Group ID) 文件在执行时以文件所属组的权限运行
- SBIT (Sticky Bit) 只有文件的所有者和 root 用户可以删除该文件
- 4+2+1 表示文件的隐藏属性
环境变量
- 环境变量是在 shell 中运行的程序可以使用的全局字符串变量
- 环境变量可以在 shell 中使用
$ 来引用
export 可以将变量导出为环境变量
unset 可以删除环境变量
printenv 可以打印所有环境变量
PATH 用来指定命令的搜索路径
文件描述符
- 每个进程都有一个文件描述符表, 用来记录打开的文件
- 高并发服务器要注意文件描述符的上限, 可以通过
ulimit -n 来查看, 可以通过 ulimit -n 10240 来设置
操作
ctrl+alt+f[1-6] 更换 6 个终端
command 其实是调用了一个 子 shell source 在本 shell
文件系统
- 将权限属性放在 inode 中, 实际数据放置到数据区块, 超级区块放置文件系统整体信息
- inode 同时记录文件所在数据区块, 这也就是索引式文件系统
- 目录的数据就是目录下的文件名与文件的 inode
SWAP 分区
- 当内存不足时, 系统会将内存中的数据交换到交换分区中
vmstat 可以查看系统的内存使用情况, 包括交换分区的使用情况
xfs 系统
- 实时分配 inode, 除了数据区域之外, 还有两个区域分别是记录文件系统的变化以及缓冲新建立的文件 (分配好再放)
- ext 文件系统只能针对整个文件系统配额, XFS 可以用 project 模式来设计不同目录的磁盘配额
~~快捷方式~~
- 硬链接是建立两个不同的文件名, 指向同一个 inode, 但是不能链接目录, 也不能跨文件系统
- 软链接是一个文件, 当你操作的时候会导向实际的目录
用户
- 一个用户可以在多个用户组, 所以要区分有效用户组与初始用户组, 对已有文件, 该用户的权限是所有加入用户组, 新建文件归属有效用户组
- UID/GID 才是用户本体
权限
- ACL 精确到点配置权限
- PAM 模块负责验证, 免得软件自己整自己的
磁盘
- RAID 0/1/5 分开存 / 备份存 / 混合存 (交叉备份)
- PV 物理卷, 拆分为 PE 物理拓展块, 一堆 PE 合并为 VG 卷组, 一大个卷组分为 LV 逻辑卷
- 依赖将 VG 中的 PE 在 LV 间转移实现 LVM
进程
- 守护进程是在后台运行的进程, 没有控制终端
- 系统建立子进程的过程是先复制一个父进程, 然后多了一个 PPID, PID 和名用新的, 然后再加载新程序
- 可以通过 nice 值来调整进程的优先级范围是 - 20 到 19, 一般用户的范围是零到 19, 并只能将 Nice 值越调越高
线程