文件系统
根文件系统
引用百度百科上一句话就是:
根文件系统首先是内核启动时所 mount 的第一个文件系统,内核代码映像文件保存在根文件系统中,而系统引导启动程序会在根文件系统挂载之后从中把一些基本的初始化脚本和服务等加载到内存中去运行。
LSB标准
全称:Linux Standards Base,它是一套核心标准,它保证了 Linux 发行版同 Linux 应用程序之间的良好结合。在 LSB 标准中有一个文件系统层级结构标准(FHS,全称 FileSystem Hierarchy Standard),它规定了每一个 linux 系统的根文件系统中必须有如下一级子目录,如: /etc
、 /usr
、 /var
、 /root
、 /home
、 /dev
等,它们对应的作用如下:
/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader,grub)都存放于此目录。
/bin:供所有用户使用的基本命令,不能关联到独立分区,存放着 OS 启动即会用到的程序。
/sbin:管理类的基本命令,不能关联至独立分区,同样是存放着 OS 启动即会用到的程序。
/lib:存放着基本共享库文件、内核模块文件(/lib/modules),为 /bin 及 /sbin 目录下的程序提供支持库。
/lib64:存放专用于 x86_64 系统上的辅助共享库文件,为 /bin 及 /sbin 目录下的程序提供支持库。
/etc:配置文件目录。
/home:普通用户的主目录(也叫家目录)位置,如 /home/zze。
/root:root 用户的默认主目录。
/media:便携式移动设备挂载点。
/mnt:通常用来挂载临时系统。
/dev:特殊文件和设备文件存放位置。
/opt:第三方应用程序的安装位置。
/srv:存放了当前 OS 上服务用到的数据。
/tmp:临时文件目录。
/usr:全称 universal shared,read-only data,存放全局共享只读数据(存放了除了 /bin 和 /sbin 中存放的应用程序之外的程序)。在其中有如下子目录:
bin:保证系统拥有完整功能而提供的应用程序。
sbin:功能同 bin 目录,但通常其中的应用程序只能由管理员运行。
lib:为 bin 和 sbin 中的应用程序的运行提供支撑库。
lib64:功能同 lib 目录,只是通常其中只存放 x86_64 的相关库文件。
include:存放了 C 程序可能使用到的头文件(header files)。
share:存放了结构化的、独立的数据,如 doc、man 等。
local:本地层级结构,第三方应用程序安装位置,取代之前的 /opt 目录。它又是一个独立的层级路径,也可以有 bin、sbin、lib、lib64、etc、share 等目录。
/var:存放一些经常发生变化的数据文件,它也有它特有的层级目录结构,如下:
cache:应用程序缓存数据目录。
lib:应用程序状态信息数据。
local:专用于为 /usr/local 下的应用程序存放可变数据。
lock:锁文件。
log:日志目录及文件。
opt:专用于为 /opt 下的应用程序存放可变数据。
run:与运行中的进程相关数据,通常用于存储进程的 pid 文件。
apool:可以理解为应用程序的数据缓冲池。
tmp:保存系统两次重启之间产生的临时数据。
/proc:用于输出内核与进程信息相关的虚拟文件系统(伪文件系统)。
/sys:用于输出当前系统上硬件设备相关信息的虚拟文件系统。
/misc:存放杂项文件,不便归类的文件。
/selinux:全称 security enhanced linux,selinux 相关的安全策略等信息的存储位置。
Linux应用程序的组成部分
二进制文件:/bin、/sbin、/usr/bin、/usr/sbin、/usr/local/bin、/usr/local/sbin
库文件:/lib、/lib64、/usr/lib、/usr/lib64、/usr/local/lib、/usr/local/lib64
配置文件:/etc、/etc/DIRECTORY、/usr/local/etc
帮助文件:/usr/share/man、/usr/share/doc、/usr/local/share/man、/usr/local/share/doc
Linux下的文件类型
-
(f
):普通文件。
d
:目录文件。
b
:块设备。
c
:字符设备。
l
:符号链接文件。
p
:管道文件。
s
:套接字文件(socket)。
文件管理
复制
cp SRC... DEST
说明:
如果 DEST 不存在则新建 DEST ,并将 SRC 中内容填充至 DEST 中
如果 DEST 存在:
如果 DEST 是文件,将 SRC 中的内容覆盖到 DEST 中,此时建议使用 -i 选项,在覆盖操作完成前会有一个提示
如果 DEST 是目录,在 DEST 目录下新建与 SRC 同名的文件,并将 SRC 中的内容填充到新文件中
如果 SRC 为多个,那么 DEST 必须存在,且必须是一个目录
如果 SRC 是目录:
此时需要使用选项 -r 才能递归复制 SRC 目录内容到 DEST
如果 DEST 不存在,则创建 DEST 目录,复制 SRC 目录中的所有文件至 DEST 中
如果 DEST 存在且它是一个文件,将会报错
如果 DEST 存在且它是一个目录,则会复制 SRC 目录及该目录下的所有文件到 DEST 目录中
常用选项:
-i:交互式
-r,-R:递归复制目录及目录下的所有内容
-P:复制文件本身,而不是复制链接的内容
--preserv:默认值为 mode,ownership,timestamp
-d:--no-dereference --preserv=links,不追踪符号链接
-a:归档复制并保留所有的元属性,相当于 -dR --preserv=all
-v:--verbose,显示详细信息
-p:相当于 --preserv=mode,ownership,timestamp
-f:强制覆盖
元属性有:mode(权限)、 ownership(主属组)、timestamp(时间戳)、 links、xattr、context、all。
移动
mv SRC... DEST
说明:
如果 SRC 是单个文件,且 DEST 不存在,则新建 DEST 文件,将 SRC 内容填充到 DEST 文件,并删除 SRC 文件,即就是一个重命名操作
如果 SRC 是多个文件,那么 DEST 必须存在且必须为一个目录
如果 SRC 是一个目录:
如果 DEST 存在,则报错
如果 DEST 不存在,则新建 DEST,将 SRC 目录的内容填充到 DEST 中,并删除 SRC 目录
常用选项:
-i:交互式
-f:强制覆盖
删除
rm DEST
说明:
删除文件
常用选项:
-i:交互式
-f:强制删除
-r:指定递归删除目录及目录下的所有文件
评论区