每天一个Linux命令(23)--linux 目录结构(一)
对于每一个Linux 学习者来说,了解 Linux 文件系统的目录结构,是学好Linux 的至关重要的一步,深入了解Linux 文件目录结构的标准和每个目录的详细功能,对于我们用好Linux 系统至关重要,下面我们就开始了解一下 Linux 目录结构的相关知识。
当在使用Linux 的时候,如果您通过 ls -l / 就会发现,在 / 下包涵很多的目录,比如 etc usr var bin 等目录,而在这些目录中,我们进去看看,发现也有很多的目录或文件。文件系统在 Linux 下看上去就像树形结构,所以我们可以把文件系统的结构形象的称为 树形结构。
文件系统是用来组织和排列文件存取的,所以它是可见的,在Linux 中,我们可以通过 ls 等工具来查看其结构,在Linux 系统中,我们见到的都是树形结构;比如操作系统安装在一个文件系统中,它表现为 由 / 起始的树形结构。Linux 文件系统的最顶端是 / , 我们称 / 为Linux 的root,也就是 Linux 操作系统的文件系统。Linux 的文件系统的 入口就是 /,所有的目录、文件、设备都在 / 之下,/ 就是 Linux 文件系统的组织者,也是最上级的领导者。
由于 Linux 是开发源代码,各大公司和团体根据 Linux 的核心代码做各自的操作,编程。这样就造成在根下的目录的不同。这样就造成个人不能使用他人的Linux 系统的PC。因为你根本不知道一些基本的配置,文件在哪里。这就造成了混乱。这就是FHS(Filesystem Hierarchy Standard)机构诞生的原因。该机构是Linux 爱好者自发的组成的一个团体,主要是对Linux 做一些基本的要求,不至于是操作者换一台主机就成了Linux 的文盲
根据FHS(http://www.pathname.com/fhs/)的官方文件指出,他们的主要目的是希望让使用者可以了解到已安装软件通常放置于哪个目录下,所以他们希望独立的软件开发商、操作系统制作者、以及想要维护系统的用户,都能够遵循FHS 的标准。也就是说, FHS 的重点在于规范每个特定的目录下应该要放置什么样子的数据而已。这样做好处非常多,因为Linux 操作系统就能够在既有的面貌下(目录架构不变)发展出开发者想要的独特风格。
事实上,FHS 是根据过去的惊艳一直在持续的改版的,FHS依据文件系统使用的频繁与否与是否允许使用者随意更动,而将目录定义成为四种交互作用的形态,用表格来说有点像底下这样:
可分享的(shareable) | 不可分享的(unshareable) | |
不变的(static) |
/usr(软件放置处) /opt(第三方协力软件) |
/etc (配置文件) /boot(开机与核心文档) |
可变动的(variable) |
/var/mail(使用者邮箱) /var/spool/news(新闻组) |
/var/run (程序相关) /var/lock (程序相关) |
四种类型:
1.可分享的:可以分享给其他系统挂在使用的目录,所以包含执行文件与用户的邮件等数据,是能够分享给网络上其他主机挂载的目录;
2.不可分享的:自己机器上面运作的装置文件或者是与程序有关的socket 文件等,由于仅与自身机器有关,所以当然就不适合分享给其他主机了。
3.不变的:有些数据是不会经常变动的,跟随着distribution 而不变动。例如函数库、文件说明文件、系统管理员所管理的主机服务配置文件等等;
4.可变动的:经常改变的数据,例如登录文件、一般用户可自行收受的新闻组等。
事实上,FHS针对目录树架构仅定义出三层目录底下应该放置什么数据而已,分别是底下这三个目录的定义:
/ (root,根目录) 与开机系统有关;
/usr (unix software resource) 与软件安装/执行有关
/var (variable) 与系统运作过程有关
一、根目录 的意义与内容。
根目录是整个系统最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的,同时根目录与开机/还原/系统修复等动作有关。由于系统开始时需要特定的开机软件,核心文件,开机所需程序,函式库等等文件数据,若系统出现错误时,根目录也必须要包含有能够修复文件系统的过程才行。因为跟目录是这么的重要,所以在 FHS 的要求方面,他希望根目录不要放在非常大的分区,因为越大的分区内你会放入越多的数据,如此一来根目录所在分区就可能有较多发生错误的机会。
因此FHS 标准建议:根目录 / 所在分区应该越小越好,且应用程序所安装的软件最好不要与根目录放在同一个分区内,保持根目录越小越好。如此不但效能较佳,根目录所在的文件系统也较不容易发生问题。说白了,就是根目录和Windows的C盘一个样。
根据以上原因,FHS认为根目录下应该包含以下目录:
目录 | 应放置档案内容 |
/bin |
系统有很多放置执行档的目录,但/bin比较特殊。以为/bin放置的是在单人维护模式下还能 够被操作的指令。在/bin底下的指令可以被root 与一般账号所使用, 主要有:cat.chmod,chown,date,mv,mkdir,cp,bash等常用指令。 |
/boot |
主要放置开机会使用到的档案,包括Linux 核心档案以及开机选项与开机所需设定档等等。 Linux kernel 常用的档案为:vmlinuz,如果使用的是 grub这个开机管理程序, 则还会存在/boot/grub这个目录 |
/dev |
在Linux 系统上,任何装置与周边设备都是以档案的形态存在与这个目录当中。 只要通过存取这个目录下的某个档案,就等于存取某个装置。比较重要的档案有: /dev/null, /dev/tty, /dev/lp* , /dev/hd* , /dev/sd* 等等 |
/etc |
系统主要的设定档几乎都放置在这个目录内,例如人员的账号密码,各种服务的起始文档。 一般来说这个目录下的各种档案属性是可以让一般使用者查询的,但是只有 root 有权利修改。 FHS建议不要放置可执行档(binary)在这个目录中。 比较重要的档案有:/etc/inittab, /etc/init.d/, /etc/modprobe.conf /etc/X11 /etc/fatab /etc/sysconfig 等等。 另外,其下重要的目录有:/etc/init.d 所有服务的预设启动script 都是放在这里的。 例如要启动或者关闭 iptables : /etc/init.d/iptables strat /etc/xinetd.d 这就是所谓的 super daemon 管理的各项服务的设定档目录 /etc/X11 与X Window 有关的各种设定档都在这里, 尤其是xorg.conf或XF86Config这两个X Server的设定档。 |
/home |
这是系统预设的使用者家目录。在你新增一个一般使用者账号时, 预设的使用者家目录都会规范到这里来。比较重要的是,家目录有两种代号: ~:代表当前使用者的家目录, ~guest: 则代表用户名为guest 的家目录 |
/lib |
系统的函式库非常的多,而/lib 放置的则是在开机时会用到的函式库,以及在 /bin或 /sbin 底下的指令会呼叫的函式库而已。什么事函式库?你可以将它想成是外挂,某些命令必须 要有这些外挂才能够顺利完成程式的执行之意。尤其重要的是 /lib/modules 这个目录, 因为该目录会放置核心相关的模组(驱动程序) |
/media |
media 是媒体的英文,这个/media 底下放置的就是可以移除的装置。包括 软碟、光碟、DVD等等装置,常见的档案命名:/media/floppy, /media/cdrom |
/mnt |
如果你有想要暂时挂载某些额外的装置,一般建议你可以放置到这个目录中。 在古早的时候,这个目录的用途与/media 相同。只是有了 /media 之后,这个 目录就被用来暂时挂载用了。 |
/opt |
这个是给第三方协议软件放置的目录。什么是第三方协软件?举例来说: KDE这个桌面管理系统是一个独立的计划,不过它可以安装到 Linux 系统中, 一次,KDE的软体就建议放置到此目录下了。另外,如果你想要自行安装额外的软件, 那么你也能够将你的软件安装到 /opt 目录下。或者还有人习惯放置在/usr/local目录下。 |
/root |
系统管理员(root)的家目录。之所以放在这里,是因为如果进入单人维护模式而仅 挂载根目录时,该目录就能够拥有root的家目录,所有我们会希望root 的家目录与根 目录放置在同一个分区中。 |
/sbin |
linux 有非常多指令是用来设定系统环境的,这些指令只有 root 才能够利用来设定系统, 其他使用者最多只能用来查询。放在/sbin 底下的,是开机过程中所需要的, 里面包括了开机、修复、还原系统所需要的指令。至于某些服务器软件程序,一般 则放置到/usr/sbin 当中。至于本机自行安装的软件所产生的系统执行文档, 则放置到/usr/local/sbin当中了、 常见的指令包括:fdisk fsck ifconfig init mkfs |
/srv |
srv 可以看做 service 的缩写,是一些网络服务启动之后,这些服务所需要取用的资料目录 常见的服务例如:WWW FTP等,举例来说,WWW服务器需要的网页资料就可以放置在 /srv/www里面 |
/tmp |
这是让一般使用者或者是正在执行的程序暂时放置档案的地方。这个目录是任何人都能存取的 所以需要定时的清理一下。当然,重要的资料不可放置在此目录。防止被误删除。 |
事实上,FHS 针对目录所定义的标准就仅限于上表,不过仍旧有些目录也需要我么了解一下。
目录 |
应放置文件内容 |
/lost+found |
这个目录是使用标准的ext2 /ext3档案格式才会产生的一个目录,目的在于档案系统发生错误时, 将一些遗失的片段放置到这个目录下。这个目录通常会分割到最顶层存在, 例如你加装一个硬盘于/disk 中,那在这个系统下就会自动产生一个这样的目录/disk/lost+found |
/proc |
这个目录本身是一个虚拟文件系统(virtual filesystem)。它放置的资料都是在内存当中, 例如系统核心、进程信息,外设的状态及网络状态。因为这个目录下的资料都是在内存当中, 所以本身不占任何硬盘空间。 比较重要的档案有:/proc/cpuinfo, /proc/dma, /proc/interrupts,/proc/ioports,/proc/net/* |
/sys |
这个目录其实跟/proc非常类似,也是一个虚拟的档案系统,主要也是记录与核心相关的内容。 包括目前已载入的核心模块与核心检测到的硬件等。这个目录同样不占硬盘容量。 |
除了这些目录的内容之外,另外要注意的是,因为根目录与开机有关,开机过程仅有根目录会被挂载,其他分区则是在开机完成之后才会持续的进行挂载的行为。
就是因为如此,因此根目录下与开机过程有关的目录,就不能够与根目录放到不同的分区去。那哪些目录不可与根目录分开呢?
/etc 配置文件
/bin 重要的执行文件
/dev 所需要的设备文件
/lib 执行文件所需的函式库与核心所需的模块
/sbin 重要的系统执行文件
今天这篇略显长,所有一分为二。不然一下看太多了记不住。
每天一个Linux命令(23)--linux 目录结构(一)的更多相关文章
- Linux命令学习笔记目录
Linux命令学习笔记目录 最近正在使用,linux,顺便将用到的命令整理了一下. 一. 文件目录操作命令: 0.linux命令学习笔记(0):man 命令 1.linux命令学习笔记(1):ls命令 ...
- Linux文件系统的主要目录结构说明及分区方案
Linux操作系统有一些固定的目录.各种Linux发行版的目录结构虽然不会一模一样,但是不会有很大差异.知道了这些目录的作用,不仅对你进行磁盘分区规划很有帮助,而且会让你以后的日常维护工作变得轻松.只 ...
- 比起Windows,怎样解读Linux的文件系统与目录结构?
比起Windows,怎样解读Linux的文件系统与目录结构? Linux 和Windows的文件系统有些不同,在学习使用 Linux 之前,若能够了解这些不同,会有助于后续学习. 本文先对Window ...
- Linux基础系列—Linux内核源码目录结构
/** ****************************************************************************** * @author 暴走的小 ...
- Linux命令——文件和目录管理
Linux命令--文件和目录管理 基本命令 命令ls 作用:显示目录下的文件和文件夹 说明:默认显示当前目录,可跟路径参数 参数:-a,显示隐藏目录 参数:-l,显示文件权限 参数:-d,显示文件最后 ...
- 20个Linux命令及Linux终端的趣事
20个Linux命令及Linux终端的趣事 . 命令:sl (蒸汽机车) 你可能了解 ‘ls’ 命令,并经常使用它来查看文件夹的内容.但是,有些时候你可能会拼写成 ‘sl’ ,这时我们应该如何获得一些 ...
- 自定义一个compass可编译的目录结构
在学习compass的过程中, 根绝文档说明,如果使用compass create myObject命令会创建一个标准的Compass项目目录结构,如下图: 此时如果使用compass compile ...
- linux 命令——23 目录结构
对于每一个Linux学习者来说,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步.,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统只管重要,下面 ...
- 【转】完美解读Linux中文件系统的目录结构
一.前 言 接触Linux也有一段时间了,不过这几天在编译开源程序时,才发现自己对linux文件系统的目录结构了解的不够透彻,很多重要目录都说不清楚是用来干嘛的,于是在网上百度了一下这方面的介绍,根据 ...
- Linux 文档与目录结构
Linux之文档与目录结构 Linux文件系统结构 Linux目录结构的组织形式和Windows有很大的不同.首先Linux没有“盘(C盘.D盘.E盘)”的概念.已经建立文件系统的硬盘分区被挂载到 ...
随机推荐
- poi2007
序:为什么写poi,zy说poi都是思路题目,不像hnoi妈的数据结构队..... 1.bzoj1102 题目大意:定义了一个山谷和山峰,求他们数量. 题解:这种题bfs咯,在bfs的时候记录一下相邻 ...
- Bzoj 1936
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1396 题解:待更 代码:待更 开始时间: 结束时间:
- 家用计费系统ER图
家用计费系统研发开始.在此记录自己的开发过程.
- ios framework 开发实战 之 参考
WWDC2014之iOS使用动态库 iOS开发——创建你自己的Framework 使用CocoaPods开发并打包静态库 iOS Framework 和CocoaPods TDD的iOS开发初步以及K ...
- DEV组件LookupEdit,ComboBoxEdit绑定数据源
LookupEdit可以绑定数据表(DataTable)或对象数据组(Object List)作为数据源,下拉窗体可自定显示栏位. 绑定数据源需要设置三个参数:DisplayMember ,Value ...
- JS基础知识:Javascript事件触发列表
Javascript是一种由Netscape的LiveScript发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言. JavaScript使我们有能 ...
- 实现微信浏览器自动播放MP3音乐
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- word中利用宏替换标点标点全角与半角
Alt+F11,然后插入-模块: 复制下面代码到编辑窗口: Sub 半角标点符号转换为全角标点符号() '中英互译文档中将中文段落中的英文标点符号替换为中文标点符号 Dim i As Paragrap ...
- c# silverlight
分享 tsc 条码打印机 打印控件 调用方法 , c# silverlight 下载 TSCLIB.dll http://download.csdn.net/detail/peiyu_peiyu/47 ...
- VS生成时复制文件到指定目录
1.右键项目属性,选择生成事件,再点击"编辑后生成事件",可以直接在编辑框内填写命令行,如图: 2.也可以在弹出的编辑框内,写命令,$(ProjectDir)这种是系统的宏路径,具 ...