文件目录结构
闲话篇:
Linux 我也是最近才开始学, 写随笔是为分享学习经验的同时也留着供自己以后来参考. 因为 Linux 一切皆文件的基本哲学思想. 所以我决定从文件目录开始写.
正文:
首先 Linux 文件系统格式为 ext3/4(ext 是 extended 的缩写, 意为扩展, 全称 Linux 扩展文件系统), 这个简单提下.
然后 Linux 文件系统是树状结构, 所有的文件皆在一个叫 / 的目录下, 所以这个 / 也叫做根目录.
而根目录 (/) 下的一级文件目录大多也是规定好的, 由下图这几个关键目录 (骨干) 组成, 这些目录 (文件夹) 下各自存放了用于完成不同工作的文件, 下图截取自 fhs 文档, 感兴趣的可以访问这个网站查看并下载最新的 fhs 的 PDF 文档 http://www.pathname.com/fhs/ , 这个文档是专门讲 Linux 文件系统的, 最权威
下面就是我的翻译工作:
/bin : 存放基本的二进制指令文件, 一般我们在 Linux 命令行里输的命令都是来自于 / bin 目录下
/boot : 存放系统的开机引导文件, 内核会根据 / boot 分区下的文件配置一步步加载磁盘内的文件开机, 相当于 Windows 的引导分区, 占用空间不大, 一般几百 M
/dev : 存放访问硬件设备的文件, 用来访问硬盘, 内存等各个硬件
/etc : 存放系统配置文件, 开机登陆界面, 命令行字符格式, 用户管理都在这个目录下可以改, 相当于 Windows 下的注册表
/lib : 存放静态库文件, 应该是给开发程序调用的, 相当于 Windows 下的 system32 目录
/media : 作为可移动存储设备的挂载点, 用来访问 u 盘, cd 光盘的内容
/mnt : 作为暂时访问其他文件系统的挂载点, 应该访问 Windows 分区或其他文件格式的设备用的, fhs 文档里对他就四行讲解, 所以我觉得不重要(其实是我没怎么理解)
/opt : 存放附加程序安装包的, 也就是后来自己想下的软件安装包可以放这里, 我就理解了这些, 要求挺多的, 详见 fhs 文档 3.13 处, 感觉不重要
/sbin : 存放给系统还有 root 用户调用的基本二进制文件, 许多时候普通用户执行命令提示权限不足的命令大多放在这个文件目录下, 还有就是在 / usr/sbin 目录下
/srv : 存放系统服务产生的数据, 但我在 centos7 系统上查看了它里面的内容, 结果连个隐藏文件都没有, 结合 fhs 文档所言, 这个文档具体做什么没明确规定(可能是我翻译问题, 但感觉这个不重要)
/tmp : 存放临时数据的文件, 这个目录可以, 一般我想做什么实验都在这个目录, 做完实验就把文件清了, 所以是垃圾文件集中地, 一般存储空间不够就问他要点比较安全
/usr : 存放共用的可读文件(不可写, 也就是里面文件内容大多不能改的),Linux 文件系统第二重要的目录(第一重要的目录被我扔了不好意思), 它里面的 / bin 子目录下存放了大多数用户使用的命令,/include 子目录下放了 c 语言的头文件,/lib 子目录下放了库文件, 还有 / local,/sbin,/share 这些子目录都相当于工具包, 可以理解为 Windows 下 program 文件夹, 里面有各类软件还有软件用到的库文件, 头文件, 总之对这个目录能去用里面的工具但不能去乱改里面的内容
/var : 存放变量数据, 跟 / tmp 目录差不多, 也是临时数据, 但它里面放的不是垃圾文件, 它更倾向于记录, 它里面记录了所有程序的日志还有系统日志等, 当然这些日志文件也是可以删的, 当然要空间首选还是 / tmp 目录
与第三方系统比较:
许多基于 Linux 底层的第三方系统都继承了一个好习惯, 如下图, 左图是我的虚拟机装的 centos7 系统下执行 tree 命令看到的根目录结构, 可以跟右图对比: 一个不漏
如果你也有装有 CentOS 系统的主机可以执行以下命令查看
1. 安装 tree 软件, 一般默认可能没安装, 可以先在命令行里输个 tree 看看找不找得到这个命令, 没有就执行下面这条命令安装 tree, 如果提示权限不足的话命令前面加个 sudo
yum -y install tree
2.tree 的用法, 下面的命令是查看根目录 / 下的一级目录, 这里 - L 后面跟的 1 就是查看一级目录, 2 就是二级目录
tree -L 1 /
3. 查看 tree 的所有用法的帮助, 下面两种命令都可以查看这个命令的细致用法
- man tree
- tree --help
玩法很多, 自行体验咯
奇怪的地方:
既然都看到这里了, 我就再写点 Linux 文件系统里神奇的地方吧, 就在我们提过的 / dev 目录下, 有三个特殊的子目录, 如下图所示, 还有神奇的英语介绍
下面又是我的奇怪翻译:
/dev/null : 所有写到这个设备 (目录) 下的数据都是被删除的, 从这里读数据只会返回 EOF 状态, 其实就是回收站, 你可以把不要的垃圾文件 mv(move, 移动命令)到这里.
/dev/zero : 这个设备是用来输出 0 的, 任何写到这个设备的数据都会被扔掉, 只能从这个设备里读取数值 0, 但这有什么用呢, 如果你要测试硬盘性能, 可以从这个设备里读数据 0 写到文件里看看用了多少时间. 如下面的命令就是从 zero 设备里读取 0 写到我们要测试的 boot 分区里的 1gb 文件, bs 设置块大小 1m,count 也就是写入块的个数为 1024, 那么总共就是写入 1 个 g 的内容然后会返回测试数据, 多大的数据用了多久完成, 速度是 xxxM/s
dd if=/dev/zero of=/boot/1gb.file bs=1M count=1024
/dev/tty : 这个设备相当于终端进程, 一旦这个设备打开, 所有读写操作都会像实际打开的终端一样在它上面实现 (显示), 也就是你打开 tty, 就能控制对应 tty 窗口的输入输出, 终端(terminal) 你可以理解成 Windows 下的桌面, 现在 windows10 可以开多个桌面, 而 Linux 也有多个终端可以输入输出显示.
互动环节:
最后想请教各位, Linux 文件系统里第一重要的目录是哪个? 还有那些我感觉不重要的目录是不是我遗忘了什么? 写了随笔才发现原来自己还是挺多不清楚的. 有问题还望大家及时指出, 别让我坑害了像我一样的新人.
来源: https://www.cnblogs.com/masterb/p/12368296.html