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是不同的。

   Linux有很多发行版本,但无论哪个哪个版本的Linux系统,都有这些目录,这些目录应该是标准的。当然各个Linux发行版本也会存在一些小小的 差异,但总体来说,还是大体差不多,差别主要表现在系统管理的特色工具以及软件包管理方式的不同,除此之外,没有什么大的差别; 比如Fedora软件包管理工具是rpm,而Slackware是pkgtool 或installpkg等;


/
Linux文件系统的入口,也是处于最高一级的目录。


/bin
基础系统所需要的那些命令位于此目录,也是最小系统所需要的命令;比如 ls、cp、mkdir等命令;功能和/usr/bin类似,这个目录中的文件都是可执行的,普通用户都可以使用的命令。做为基础系统所需要的最基础的命令就是放在这里。


/boot
Linux的内核及引导系统程序所需要的文件,比如 vmlinuz initrd.img 文件都位于这个目录中。在一般情况下,GRUB或LILO系统引导管理器也位于这个目录。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 ) 读出或写入数据你可以和接到上面的设备进行通讯。


/etc
这个目录用来存放所有的系统管理所需要的配置文件和子目录。一些服务器的配置文件也在这里,比如用户帐号及密码配置文件。


/home
Linux 是多用户环境,所以每一个用户都有一个只有自己可以访问的目录(当然管理员也可以访问)。它们以 /home/username 的方式存在。这个目录也保存一些应用对于这个用户的配置,比如 IRC, X 等。


/lib
这里包含了系统程序所需要的所有共享库文件,类似于 Windows 的共享库 DLL 文件。


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


/media
即 插即用型存储设备的挂载点自动在这个目录下创建,比如USB盘系统自动挂载后,会在这个目录下产生一个目录 ;CDROM/DVD自动挂载后,也会在这个目录中创建一个目录,类似cdrom 的目录。这个只有在最新的发行套件上才有,比如Fedora Core 4.0 5.0 等。可以参看/etc/fstab的定义。

/mnt
这个目录一般是用于存放挂载储存设备 的挂载目录的,比如我们可以将光驱挂载在/mnt/cdrom上,然后进入该目录就可以查看光驱里的内容了。如果需要,你也可以在这里建立其它的加载目 录,对于加载目录的位置并没有强制性的要求,你可以在系统的任意位置建立加载目录,建立 /mnt 只是为了使系统更工整的惯例。

/opt
这 个目录包含所有默认系统安装之外的软件和添加的包,也就是自定义软件包,比如在Fedora Core 5.0中,OpenOffice就是安装在这里。有些我们自己编译的软件包,就可以安装在这个目录中;通过源码包安装的软件,可以通过 ./configure --prefix=/opt/目录 。

/proc
这是系统中极为特殊的一个目录,实际上任 何分区上都不存在这个目录。它实际是个实时的、驻留在内存中的文件系统。 操作系统运行时,进程(正在运行中的程序)信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。/proc目录伪装的文件系统proc的挂载 目录,proc并不是真正的文件系统,它的定义可以参见 /etc/fstab 。

/root
这是root的用户用户目录。


/sbin
大 多是涉及系统管理的命令的存放,是超级权限用户root的可执行命令存放地,普通用户无权限执行这个目录下的命令,这个目录和/usr/sbin; /usr/X11R6/sbin或/usr/local/sbin目录是相似的; 我们记住就行了,凡是目录sbin中包含的都是root权限才能执行的。


/tmp 临时文件目录,有时用户运行程序的时候,会产生临时文件。/tmp就用来存放临时文件的,有些系统会在启动或关机时清空此目录。/var/tmp目录和这个目录相似。

/usr
这 个是系统存放程序的目录,比如命令、帮助文件等。这个目录下有很多的文件和目录。当我们安装一个Linux发行版官方提供的软件包时,大多安装在这里。如 果有涉及服务器配置文件的,会把配置文件安装在/etc目录中。/usr目录下包括涉及字体目录/usr/share/fonts ,帮助目录 /usr/share/man或/usr/share/doc,普通用户可执行文件目录/usr/bin 或/usr/local/bin 或/usr/X11R6/bin ,超级权限用户root的可执行命令存放目录,比如 /usr/sbin 或/usr/X11R6/sbin 或/usr/local/sbin 等;还有程序的头文件存放目录/usr/include。


/var
这个目录的内容是经 常变动的,看名字就知道,我们可以理解为vary的缩写,/var下有/var/log 这是用来存放系统日志的目录。/var/www目录是定义Apache服务器站点存放目录;/var/lib 用来存放一些库文件,比如MySQL的,以及MySQL数据库的的存放地。


再补充一下一些比较重要的目录的用途;

/etc/init.d
这个目录是用来存放系统或服务器以System V模式启动的脚本,这在以System V模式启动或初始化的系统中常见。比如Fedora/RedHat。

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

/etc/rc.d
这是Slackware发行版有的一个目录,是BSD方式启动脚本的存放地;比如定义网卡,服务器开启脚本等。

/etc/X11
是X-Windows相关的配置文件存放地;
比如下面的例子:


[root@localhost ~]# /etc/init.d/sshd start 注:启动sshd服务器
[root@localhost ~]# /etc/init.d/sshd stop 注:停止sshd服务器
启动 sshd: [确定]

这就是典型的sshd 服务器 System V模式启动脚本,通过这运行这个脚本可以启动sshd服务器了。

/usr/bin
这 个目录是可执行程序的目录,普通用户就有权限执行; 当我们从系统自带的软件包安装一个程序时,他的可执行文件大多会放在这个目录。比如安装gaim软件包时。相似的目录是/usr/local/bin; 有时/usr/bin中的文件是/usr/local/bin的链接文件。

/usr/sbin
这个目录也是可执行程序的目录,但大多存放涉及系统管理的命令。只有root权限才能执行;相似目录是/sbin 或/usr/local/sbin或/usr/X11R6/sbin等。

/usr/local
这个目录一般是用来存放用户自编译安装软件的存放目录;一般是通过源码包安装的软件,如果没有特别指定安装目录的话,一般是安装在这个目录中。这个目录下面有子目录。自己看看吧。

/usr/lib
和/lib 目录相似,是库文件的存储目录。

/usr/share
系统共用的东西存放地,比如 /usr/share/fonts 是字体目录,是用户都共用的,/usr/share/doc和/usr/share/man帮助文件,也是共用的。

/usr/src
是 内核源码存放的目录,比如下面有内核源码目录,比如 linux 、linux-2.xxx.xx 目录等。有的系统也会把源码软件包安装在这里。比如Fedora/Redhat,当我们安装file.src.rpm的时候,这些软件包会安装在 /usr/src/redhat相应的目录中。请参考: 《file.src.rpm 使用方法的简单介绍》 。另外Fedhat 4.0 5.0,他的内核源码包的目录位于/usr/src/kernels目录下的某个目录中(只有安装后才会生成相应目录)。

/var/adm
比如软件包安装信息、日志、管理信息等,在Slackware操作系统中是有这个目录的。在Fedora中好象没有。

/var/log
系统日志存放,分析日志要看这个目录的东西。

/var/spool
打印机、邮件、代理服务器等假脱机目录。