跳转至

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 值越调越高

线程

  • 本质上是轻量级进程, 但是共享了一个进程的资源