值得深究的Linux文件系统
?? ? ?大多数由windows平台转来的用户在使用linux文件系统的时候都会感到困惑。linux文件系统与windows文件系统有很大的差别。本文设身处地的为新手介绍他们的不同点并且向新手介绍linux的文件系统。
作为开端,只有一个单独的顶级目录结构。所有一切都从 '根' 开始,用 '/' 代表, 并且延伸到子目录。DOS/Windows有不同的分区,同时目录都存于分区上。linux则通过 '加载' 的方式把所有分区都放置在 '根' 下制定的目录里。windows下最接近于 '根' 的是c:。
一句话总结:Windows下,目录结构属于分区;Linux下,分区 '加载' 于目录结构。
在windows下, 启动时检测不同的分区并被赋予一个分区字母。在linux下除非你加载一个分区或设备,否则系统不会知道那个分区的存在。这看上去也许不是访问分区或设备的最方便的方式,但是这种方式提供了伟大的机动性。
这种构建的方式被称为统一的文件系统,超越了windows所使用的方式。举个使用 /usr 的例子。这个目录包含了大多数的系统可执行文件。在Linux文件系统下,你可以选择把它加载为其他分区甚至网络上的其他计算机。系统不会感知其中的不同,因为它表现出的只是本地目录结构下众多的目录中的一个而已。你是否有妄图在windows下移动可执行文件和数据,而得到的是不得不去修改注册表或干脆蓝屏?你可曾奢望过移动 c: 到其他分区上?
新手容易困惑的另一点是斜杠 '/' 的使用,在DOS/Windows下使用的是反斜杠 '\' .?
在linux中,windows的 c 是用类似 /c/windows/system 来表示的。Linux是免费的系统。在windows之前,Unix已经存在了很久。从DOS开始使用 '/' 选项而 '\' 作为目录分隔符。
更加麻烦的是Linux同样选择了大小写敏感。这意味着字母的大小写变得非常重要。所以在这种情况下THIS和ThIs是不同的。这个规定会使dos用户遇到很多麻烦。?
现在我们来看一看linux文件系统目录结构的规划。下面是在root下 'ls -p' 的结果:代码: bin/ dev/ home/ lost+found/ proc/ sbin/ usr/ boot/ etc/ lib/ mnt/ root/ tmp/ var/?/sbin
?????? ?这个目录包含了所有使系统运行的关键二进制可执行文件。包含了系统管理和维护硬件配置的程序。你可以在这里找到lilo, fdisk, init, ifconfig等等。这里有所有用户都需要的关键程序。
?
/usr/sbin
?????? ?另一个包含系统可执行文件的目录。这个目录包含了系统管理员使用的一些其他程序。这里你可以找网络守护程序以及一些不需要维护和修理系统的管理员所使用的程序。?/bin
????? ? 相对于/sbin, bin目录包含一些系统管理员和普通用户都可以使用的命令。这个目录通常包含诸如bash, csh等shell,以及诸如cp, mv, rm, cat, ls等非常有用的命令。这些命令对于用户来说是不可缺少的。?/usr/bin
????? ? 包含一些其它的用户命令。从另一方面看,这些命令本质上并不是为用户准备的。?/boot
??????? 这个目录包含system.map文件以及Linux kernel。Lilo将启动扇区的备份放在这里。?/dev
??????? 这是一个非常有趣的目录,是Linux文件系统的一个闪亮的特性 - 所有对象都是文件或目录。仔细观察这个目录你会发现hda1, hda2等, 它们代表系统主硬盘的不同分区。/dev/cdrom和/dev/fd0代表你的CDROM驱动器和floppy驱动器。看上去可能有些奇怪,但比较文件和硬件的特性这却是十分合理的。它们都可以读出和写入。例如/dev/dsp,这个文件代笔你的扬声器。那么写入这个文件的数据都回传送到喇叭。试一试 'cat /etc/lilo.conf > /dev/dsp' 你会听到一些声音。这是你的 lilo.conf 文件的声音!同样,向 /dev/ttyS0 ( COM 1 ) 读出或写入数据你可以和接到上面的设备进行通讯。?/home
??????? Linux 是多用户环境,所以每一个用户都有一个只有自己可以访问的目录(当然管理员也可以访问)。它们以 /home/username 的方式存在。这个目录也保存一些应用对于这个用户的配置,比如 IRC, X 等。?/lib
??????? 这里包含了系统程序所需要的所有共享库文件,类似于 Windows 的共享库 DLL 文件。?/lost+found???????? Linux 应该正确的关机。但有时你的系统也可能崩溃掉或突然断电使系统意外关机。那么启动的时候 fsch 将会进行长时间的文件系统检查。Fsck 会检测并试图恢复所发现的不正确的文件。被恢复的文件会放置在这个目录中。所恢复的文件也许并不完整或并不合理,但毕竟提供了一些恢复数据的机会。?/mnt???????? 这是一个普通的加载目录,在这里你可以加载你的文件系统或设备。加载是使一个文件系统对于系统可用的过程,在加载后你的文件可以在加载目录下访问。这个目录通常包含加载目录或用于加载软驱和光驱的子目录,如果需要,你也可以在这里建立其它的加载目录,对于加载目录的位置并没有强制性的要求,你可以在系统的任意位置建立加载目录。 建立 /mnt 只是为了使系统更工整的惯例。?/opt?????? ? 这个目录包含所有默认系统安装之外的软件和添加的包。一般来说你可以在这里找到 KDE 和 StarOffice 。这个目录一般并不会经常被启用,这是Unix系统安装的标准。?/proc??????? ?这是系统中极为特殊的一个目录,实际上任何分区上都不存在这个目录。它实际是个实时的、驻留在内存中的文件系统。详细信息请参阅[url]http://www.freeos.com/articles/2879/[/url]?/root???????? 这是root的用户用户目录。?/tmp???????? 这里包含大多数要用到的临时文件。许多程序在这里建立lock文件和存储临时数据。有些系统会在启动或关机时清空此目录。?/usr???????? 这是系统中很重要的一个目录,这里包含所有用户的二进制文件。X,及其库文件,用户程序比如 telnet, ftp 等等都在这里。?
??????? /usr/doc包含系统文档。/usr/src/linux包含 Linux kernel 的源码。?/var???????? ?这里存储假脱机(spooling)数据,比如 mail 以及打印机守护的输出,系统日志也存放在这里。你还可以在/var/named下找到BIND的数据库,在/var/yp下找到NIS的数据库。?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?此文转载自互联网.