文件系统的是用来组织和排列文件存取的,所以她是可见的,在Linux中,我们可以通过ls等工具来查看其结构,在Linux系统中,我们见到 的都是树形结构;比如操作系统安装在一个文件系统中,他表现为由/起始的树形结构。linux文件系统的最顶端是/,我们称/为Linux的root,也 就是Linux操作系统的文件系统。Linux的文件系统的入口就是/,所有的目录、文件、设备都在/之下,/就是Linux文件系统的组织者,也是最上 级的领导者。

由于linux是开放源代码,各大公司和团体根据linux的核心代码做各自的操作,编程。这样就造成在根下的目录的不同。这样就造成个人不能使用 他人的linux系统的PC。因为你根本不知道一些基本的配置,文件在哪里。。。这就造成了混乱。这就是 FHS(FilesystemHierarchyStandard)机构诞生的原因。该机构是linux爱好者自发的组成的一个团体,主要是是对 linux做一些基本的要求,不至于是操作者换一台主机就成了linux的‘文盲’。

根据FHS(http://www.pathname.com/fhs/)的官方文件指出,他们的主要目的是希望让使用者可以了解到已安装软件通常 放置于那个目录下,所以他们希望独立的软件开发商、操作系统制作者、以及想要维护系统的用户,都能够遵循FHS的标准。也就是说,FHS的重点在于规范每 个特定的目录下应该要放置什么样子的数据而已。这样做好处非常多,因为Linux操作系统就能够在既有的面貌下(目录架构不变)发展出开发者想要的独特风 格。

事实上,FHS是根据过去的经验一直再持续的改版的,FHS依据文件系统使用的频繁与否与是否允许使用者随意更动,而将目录定义成为四种交互作用的形态,用表格来说有点像底下这样:

可分享的(shareable)

不可分享的(unshareable)

不变的(static)

/usr(软件放置处)

/etc(配置文件)

/opt(第三方协力软件)

/boot(开机与核心档)

可变动的(variable)

/var/mail(使用者邮件信箱)

/var/run(程序相关)

/var/spool/news(新闻组)

/var/lock(程序相关)

四中类型:

1.可分享的:可以分享给其他系统挂载使用的目录,所以包括执行文件与用户的邮件等数据,是能够分享给网络上其他主机挂载用的目录;

2.不可分享的:自己机器上面运作的装置文件或者是与程序有关的socket文件等,由于仅与自身机器有关,所以当然就不适合分享给其他主机了。

3.不变的:有些数据是不会经常变动的,跟随着distribution而不变动。例如函式库、文件说明文件、系统管理员所管理的主机服务配置文件等等;

4.可变动的:经常改变的数据,例如登录文件、一般用户可自行收受的新闻组等。

事实上,FHS针对目录树架构仅定义出三层目录底下应该放置什么数据而已,分别是底下这三个目录的定义:

/(root,根目录):与开机系统有关;

/usr(unixsoftwareresource):与软件安装/执行有关;

/var(variable):与系统运作过程有关。

1、树状目录结构图

2、/目录

目录

描述

/

第一层次结构的根、整个文件系统层次结构的根目录

/bin/

系统有很多放置执行档的目录,但/bin比较特殊。因为/bin放置的是在单人维护模式下还能够被操作的指令。在/bin底下的指令可以被 root与一般帐号所使用,主要有:cat,chmod(修改权限),chown,date,mv,mkdir,cp,bash等等常用的指令。

/boot/

引导程序文件,例如:kernelinitrd;时常是一个单独的分区[6];主要放置开机会使用到的档案,包括Linux核心档案以及开机选单与开机所需设定档等等。Linuxkernel常用的档名为:vmlinuz,如果使用的是grub这个开机管理程式,则还会存在/boot/grub/这个目录。

/dev/

必要设备, 在Linux系统上,任何装置与周边设备都是以档案的型态存在于这个目录当中。只要通过存取这个目录下的某个档案,就等于存取某个装置。比要重要的档案有 /dev/null,/dev/zero,/dev/tty,/dev/lp*,/dev/hd*,/dev/sd*等等

/etc/

特定主机,系统范围内的配置文件

系统主要的设定档几乎都放置在这个目录内,例如人员的帐号密码档、各种服务的启始档等等。一般来说,这个目录下的各档案属性是可以让一般使用者查 阅的,但是只有root有权力修改。FHS建议不要放置可执行档(binary)在这个目录中。比较重要的档案有:/etc/inittab,/etc /init.d/,/etc/modprobe.conf,/etc/X11/,/etc/fstab,/etc/sysconfig/等等。另外,其下 重要的目录有:/etc/init.d/:所有服务的预设启动script都是放在这里的,例如要启动或者关闭iptables的话:/etc /init.d/iptablesstart、/etc/init.d/iptablesstop

/etc/xinetd.d/:这就是所谓的superdaemon管理的各项服务的设定档目录。

/etc/X11/:与XWindow有关的各种设定档都在这里,尤其是xorg.conf或XF86Config这两个XServer的设定档。

/etc/opt/

/opt/的配置文件

/etc/X11/

X_Window系统(版本11)的配置文件

/etc/sgml/

SGML的配置文件

/etc/xml/

XML的配置文件

/home/

这是系统预设的使用者家目录(homedirectory)。在你新增一个一般使用者帐号时,预设的使用者家目录都会规范到这里来。比较重要的是,家目录有两种代号:
~:代表当前使用者的家目录,而~guest:则代表用户名为guest的家目录。

/lib/

系统的函式库非常的多,而/lib放置的则是在开机时会用到的函式库,以及在/bin或/sbin底下的指令会呼叫的函式库而已。什么是函式库 呢?妳可以将他想成是外挂,某些指令必须要有这些外挂才能够顺利完成程式的执行之意。尤其重要的是/lib/modules/这个目录,因为该目录会放置 核心相关的模组(驱动程式)

/media/

media是媒体的英文,顾名思义,这个/media底下放置的就是可移除的装置。包括软碟、光碟、DVD等等装置都暂时挂载于此。常见的档名有:/media/floppy,/media/cdrom等等。

/lost+found

在ext3文件系统中,当系统意外崩溃或机器意外关机,会产生一些文件碎片在这里。当系统在开机启动的过程中fsck工具会检查这里,并修复已经损坏的文件系统。当系统发生问题。可能会有文件被移动到这个目录中,可能需要用手工的方式来修复,或移到文件到原来的位置上。

/mnt/

临时挂载的文件系统。比如cdrom,u盘等,直接插入光驱无法使用,要先挂载后使用。如果妳想要暂时挂载某些额外的装置,一般建议妳可以放置到这个目录中。在古早时候,这个目录的用途与/media相同啦。只是有了/media之后,这个目录就用来暂时挂载用了。

/opt/

这个是给第三方协力软体放置的目录。什么是第三方协力软体啊?举例来说,KDE这个桌面管理系统是一个独立的计画,不过他可以安装到Linux系 统中,因此KDE的软体就建议放置到此目录下了。另外,如果妳想要自行安装额外的软体(非原本的distribution提供的),那么也能够将你的软体 安装到这里来。不过,以前的Linux系统中,我们还是习惯放置在/usr/local目录下。

/proc/

虚拟文件系统,将内核进程状态归档为文本文件(系统信息都存放这目录下)。例如:uptime、 network。在Linux中,对应Procfs格 式挂载。该目录下文件只能看不能改(包括root),这个目录本身是一个虚拟文件系统(virtualfilesystem)喔。他放置的资料都是在内存
当中,例如系统核心、行程资讯(process)(是进程吗?)、周边装置的状态及网络状态等等。因为这个目录下的资料都是在记忆体(内存)当中,所以本
身不占任何硬盘空间。比较重要的档案(目录)例如:/proc/cpuinfo,/proc/dma,/proc/interrupts,/proc
/ioports,/proc/net/*等等。呵呵,是虚拟内存吗[guest]?

/root/

超级用户家目录,系统管理员(root)的家目录。之所以放在这里,是因为如果进入单人维护模式而仅挂载根目录时,该目录就能够拥有root的家目录,所以我们会希望root的家目录与根目录放置在同一个分区中。

/sbin/

必要的系统二进制文件,例如: init、 ip、 mount。sbin目录下的命令,普通用户都执行不了。,Linux有非常多指令是用来设定系统环境的,这些指令只有root才能够利用来设定系统,其 他使用者最多只能用来查询而已。放在/sbin底下的为开机过程中所需要的,里面包括了开机、修复、还原系统所需要的指令。至于某些伺服器软体程式,一般
则放置到/usr/sbin/当中。至于本机自行安装的软体所产生的系统执行档(systembinary),则放置到/usr/local/sbin /当中了。常见的指令包括:fdisk,fsck,ifconfig,init,mkfs等等。

/srv/

站点的具体数据,由系统提供。srv可以视为service的缩写,是一些网路服务启动之后,这些服务所需要取用的资料目录。常见的服务例如WWW,FTP等等。举例来说,WWW伺服器需要的网页资料就可以放置在/srv/www/里面。呵呵,看来平时我们编写的代码应该放到这里了。

/tmp/

临时文件(参见 /var/tmp),在系统重启时目录中文件不会被保留。,这是让一般使用者或者是正在执行的程序暂时放置档案的地方。这个目录是任何人都能够存取的,所
以你需要定期的清理一下。当然,重要资料不可放置在此目录啊。因为FHS甚至建议在开机时,应该要将/tmp下的资料都删除。

/usr/

默认软件都会存于该目录下。用于存储只读用户数据的第二层次;包含绝大多数的()用户工具和应用程序。

/var/

变量文件——在正常运行的系统中其内容不断变化的文件,如日志,脱机文件和临时电子邮件文件。有时是一个单独的分区。如果不单独分区,有可能会把整个分区充满。如果单独分区,给大给小都不合适。

除了这些目录的内容之外,另外要注意的是,因为根目录与开机有关,开机过程中仅有根目录会被挂载,其他分区则是在开机完成之后才会持续的进行挂载的行为。
就是因为如此,因此根目录下与开机过程有关的目录,就不能够与根目录放到不同的分区去。那哪些目录不可与根目录分开呢?有底下这些:

/etc:配置文件   /bin:重要执行档

/dev:所需要的装置文件  /lib:执行档所需的函式库与核心所需的模块

/sbin:重要的系统执行文件

这五个目录千万不可与根目录分开在不同的分区。请背下来啊。

3、/etc/目录

特定主机系统范围内的配置文件

目录

描述

/etc/rc /etc/rc.d

/etc/rc*.d

启动、或改变运行级时运行的scripts或scripts的目录.

/etc/hosts

本地域名解析文件

/etc/sysconfig/network

IP、掩码、网关、主机名配置

/etc/resolv.conf

DNS服务器配置

/etc/fstab

开机自动挂载系统,所有分区开机都会自动挂载

/etc/inittab

设定系统启动时Init进程将把系统设置成什么样的runlevel及加载相关的启动文件配置

/etc/exports

设置NFS系统用的配置文件路径

/etc/init.d

这个目录来存放系统启动脚本

/etc/profile,/etc/csh.login,
/etc/csh.cshrc

全局系统环境配置变量

/etc/issue

认证前的输出信息,默认输出版本内核信息

/etc/motd

设置认证后的输出信息,

/etc/mtab

当前安装的文件系统列表.由scripts初始化,并由mount命令自动更新.需要一个当前安装的文件系统的列表时使用,例如df命令

/etc/group

类似/etc/passwd,但说明的不是用户而是组.

/etc/passwd

用户数据库,其中的域给出了用户名、真实姓名、家目录、加密的口令和用户的其他信息.

/etc/shadow

在安装了影子口令软件的系统上的影子口令文件.影子口令文件将/etc/passwd文件中的加密口令移动到/etc/shadow中,而后者只对root可读.这使破译口令更困难.

/etc/sudoers

可以sudo命令的配置文件

/etc/syslog.conf

系统日志参数配置

/etc/login.defs

设置用户帐号限制的文件

/etc/securetty

确认安全终端,即哪个终端允许root登录.一般只列出虚拟控制台,这样就不可能(至少很困难)通过modem或网络闯入系统并得到超级用户特权.

/etc/printcap

类似/etc/termcap,但针对打印机.语法不同.

/etc/shells

列出可信任的shell.chsh命令允许用户在本文件指定范围内改变登录shell.提供一台机器FTP服务的服务进程ftpd检查用户shell是否列在 /etc/shells文件中,如果不是将不允许该用户登录.

/etc/xinetd.d

如果服务器是通过xinetd模式运行的,它的脚本要放在这个目录下。有些系统没有这个目录,比如Slackware,有些老的版本也没有。在Redhat Fedora中比较新的版本中存在。

/etc/opt/

/opt/的配置文件

/etc/X11/

X_Window系统(版本11)的配置文件

/etc/sgml/

SGML的配置文件

/etc/xml/

XML的配置文件

/etc/skel/

默认创建用户时,把该目录拷贝到家目录下

4、/usr/目录

默认软件都会存于该目录下。用于存储只读用户数据的第二层次;包含绝大多数的用户工具和应用程序。

目录

描述

/usr/X11R6

存放X-Windows的目录;

/usr/games

存放着XteamLinux自带的小游戏;

/usr/doc

Linux技术文档;

/usr/include

用来存放Linux下开发和编译应用程序所需要的头文件;

/usr/lib

存放一些常用的动态链接共享库和静态档案库;

/usr/man

帮助文档所在的目录;

/usr/src

Linux开放的源代码,就存在这个目录,爱好者们别放过哦;

/usr/bin/

非必要可执行文件
(在单用户模式中不需要);面向所有用户。

/usr/lib/

/usr/bin/和/usr/sbin/中二进制文件的

/usr/sbin/

非必要的系统二进制文件,例如:大量网络服务守护进程

/usr/share/

体系结构无关(共享)数据。

/usr/src/

源代码,例如:内核源代码及其头文件。

/usr/X11R6/

X Window系统版本 11, Release 6.

/usr/local/

本地数据的第三层次,具体到本台主机。通常而言有进一步的子目录,例如:bin/、lib/、share/.这是提供给一般用户的/usr目录,在这里安装一般的应用软件;

5、/var/目录

/var包括系统一般运行时要改变的数据.每个系统是特定的,即不通过网络与其他计算机共享.

目录

描述

/var/log/message

日志信息,按周自动轮询

/var/spool/cron/root

定时器配置文件目录,默认按用户命名

/var/log/secure

记录登陆系统存取信息的文件,不管认证成功还是认证失败都会记录

/var/log/wtmp

记录登陆者信息的文件,last,who,w命令信息来源于此

/var/spool/clientmqueue/

当邮件服务未开启时,所有应发给系统管理员的邮件都将堆放在此

/var/spool/mail/

邮件目录

/var/tmp

比/tmp允许的大或需要存在较长时间的临时文件. (虽然系统管理员可能不允许/var/tmp有很旧的文件.)

/var/lib

系统正常运行时要改变的文件.

/var/local

/usr/local中安装的程序的可变数据(即系统管理员安装的程序).注意,如果必要,即使本地安装的程序也会使用其他/var目录,例如/var/lock .

/var/lock

锁定文件.许多程序遵循在/var/lock中产生一个锁定文件的约定,以支持他们正在使用某个特定的设备或文件.其他程序注意到这个锁定文件,将不试图使用这个设备或文件.

/var/log/

各种程序的Log文件,特别是login (/var/log/wtmp log所有到系统的登录和注销)和syslog (/var/log/messages里存储所有核心和系统程序信息. /var/log里的文件经常不确定地增长,应该定期清除.

/var/run

保存到下次引导前有效的关于系统的信息文件.例如, /var/run/utmp包含当前登录的用户的信息.

/var/cache/

应用程序缓存数据。这些数据是在本地生成的一个耗时的I/O或计算结果。应用程序必须能够再生或恢复数据。缓存的文件可以被删除而不导致数据丢失。

6、/proc/目录

虚拟文件系统,将内核进程状态归档为文本文件(系统信息都存放这目录下)。

例如:uptime、 network。在Linux中,对应Procfs格式挂载。该目录下文件只能看不能改(包括root)

目录

描述

/proc/meminfo

查看内存信息

/proc/loadavg

还记得 top以及 uptime吧?没错!上头的三个平均数值就是记录在此!

/proc/uptime

就是用 uptime的时候,会出现的资讯啦!

/proc/cpuinfo

关于处理器的信息,如类型、厂家、型号和性能等。

/proc/cmdline

加载 kernel时所下达的相关参数!查阅此文件,可了解系统是如何启动的!

/proc/filesystems

目前系统已经加载的文件系统罗!

/proc/interrupts

目前系统上面的 IRQ分配状态。

/proc/ioports

目前系统上面各个装置所配置的 I/O位址。

/proc/kcore

这个就是内存的大小啦!好大对吧!但是不要读他啦!

/proc/modules

目前我们的 Linux已经加载的模块列表,也可以想成是驱动程序啦!

/proc/mounts

系统已经挂载的数据,就是用 mount这个命令呼叫出来的数据啦!

/proc/swaps

到底系统挂加载的内存在哪里?呵呵!使用掉的 partition就记录在此啦!

/proc/partitions

使用 fdisk -l会出现目前所有的 partition吧?在这个文件当中也有纪录喔!

/proc/pci

在 PCI汇流排上面,每个装置的详细情况!可用 lspci来查阅!

/proc/version

核心的版本,就是用 uname -a显示的内容啦!

/proc/bus/*

一些汇流排的装置,还有 U盘的装置也记录在此喔!

7、/dev/目录

设备文件分为两种:块设备文件(b)和字符设备文件(c)
设备文件一般存放在/dev目录下,对常见设备文件作如下说明:

目录

描述

/dev/hd[a-t]

IDE设备

/dev/sd[a-z]

SCSI设备

/dev/fd[0-7]

标准软驱

/dev/md[0-31]

软raid设备

/dev/loop[0-7]

本地回环设备

/dev/ram[0-15]

内存

/dev/null

无限数据接收设备,相当于黑洞

/dev/zero

无限零资源

/dev/tty[0-63]

虚拟终端

/dev/ttyS[0-3]

串口

/dev/lp[0-3]

并口

/dev/console

控制台

/dev/fb[0-31]

framebuffer

/dev/cdrom

=> /dev/hdc

/dev/modem

=> /dev/ttyS[0-9]

/dev/pilot

=> /dev/ttyS[0-9]

/dev/random

随机数设备

/dev/urandom

随机数设备

最新文章

  1. 用php做注册审核
  2. 初探Backbone
  3. BIRT报表工具,直接导出EXCEL
  4. loading动画效果记录
  5. 在iMac机os x上装win7双系统经验心得
  6. alert对ajax阻塞调查(IE, Chrome, FF)
  7. thinkphp ajax 无刷新分页效果的实现
  8. 2015年10个最佳Web开发JavaScript库
  9. Bayeux协议
  10. ViewFilpper
  11. LDAPserver的安装
  12. linux系统下安装配置解压版的MySQL数据库
  13. 简述angular自定义过滤器在页面和控制器中的使用
  14. springMVC上传
  15. [Swift]LeetCode121. 买卖股票的最佳时机 I | Best Time to Buy and Sell Stock
  16. android app内部更新适配到8.0
  17. 宝塔面板下安装zabbix
  18. nginx request_time 和upstream_response_time
  19. C++文件读写 打开方式等比较全
  20. 非nodejs方式的vue.js的使用

热门文章

  1. EF Power Tools参数不正确的解决方法
  2. 前端学PHP之错误处理
  3. 谈谈基于OAuth 2.0的第三方认证 [下篇]
  4. 使用Spire.Doc来转换文本
  5. Oracle数据库全球化
  6. 关于Java中的static关键字
  7. Kooboo CMS 之TextContent详解
  8. EF 的 霸气配置,秒杀一切
  9. 7.8 数据注解特性--Column
  10. AngularJS中的方法参数的问题