linux的文件结构详解

来源:互联网 发布:汽车调表软件 编辑:程序博客网 时间:2024/06/02 02:20

根(root)文件系统

根文件系统一般应设置的小一些,因为它包含着重要的文件并且小一些的、不常修改的文件系统就有一个更好的机会不被毁坏掉。一个毁坏的根文件系统通常意味着系统将不能启动了,除非使用特殊方法(例如,从软盘启动),所以你不会去冒这个险的。
根目录通常不包含任何其他文件,除了可能会有些系统的标准启动引导用的影像文件,常称为/vmlinuz。所有其它文件都在根文件系统的子目录中:

/bin

在启动引导期间所需的命令,也可以被普通用户使用(大概在启动引导以后)。

/sbin

如同/bin,但该目录中的命令不是给普通用户使用的,尽管他们在需要和允许时可能可以使用。

/etc

该目录中存储了与机器有关的配置文件。

/root

用户root的主目录。

/lib

根文件系统中的程序所需的共享库文件。

/lib/modules

可加载的内核模块,尤其是那些当从灾难中恢复启动引导系统时所需的模块文件(例如,网络以及文件系统驱动程序)。

/dev

设备文件。

/tmp

临时文件。启动后程序运行时应使用/var/tmp,而非/tmp,因为前者可能在有更大的空间的磁盘上。

/boot

用于系统启动引导加载程序。例如,LILO。内核影像文件常常是放置在此的,而不是直接放在根目录下。如果有许多内核影像文件,该目录很容易变得很大,因此此时将其置于一个分离独立的文件系统更好些。另一个理由就是要确保内核影像文件被存于IDE磁盘的1024柱面以内。

/mnt

系统管理员为临时加载的加载点。程序不会自动地加载到/mnt的。/mnt可以再划分成子目录(例如,/mnt/dosa可以是使用MS-DOS文件系统的软驱,/mnt/exta可以是一个ext2文件系统)。

/proc,/usr,/var,/home

其它文件系统的加载点。

/etc目录

/etc目录包含有许多的文件。有些文件将在下面给予讨论。对于其他一些文件,你应该确定它们是属于哪个程序的并且阅读所属程序的manual page。许多网络配置文件也包含于/etc目录中,它们在网络管理员手册中给予了讨论。

/etc/rc 或 /etc/rc.d 或 /etc/rc?.d

在系统启动时或当改变了运行层时所要运行的描述(scripts)文件或者是描述文件的目录。更多信息请参见有关init的章节。
/etc/passwd
用户数据库,所含的域有用户名、实际名称、该用户主目录、加密过的口令以及有关各个用户的其它一些信息。该文件的格式在/man{passwd} manual page中有记载。

/etc/fdprm

软盘参数表。描述了不同软盘的格式样式。由setfdprm程序使用。有关信息请参阅setfdprm的manual page。

/etc/fstab

列出了在系统启动时由mount –a命令自动加载的文件系统(在/etc/rc或者同等的启动文件中)。在Linux中,该文件也包含由swapon –a自动使用的的交换区的信息。有关更详细的信息,请参阅第四章中加载与卸载小节以及mount的manual page。

/etc/group

与/etc/passwd相类似,但描述了组的信息而非用户信息。详细信息请参见group的manual page。

/etc/inittab

init的配置文件。

/etc/issue

getty输出的在login提示之前的信息。通常含有一小段叙述或是欢迎使用系统的消息。内容由系统管理员决定。

/etc/magic

file的配置文件。包含了基于file猜测出的文件类型的各种文件格式的描述。

/etc/motd

当日消息,在成功登录后将自动输出(显示)。其内容由系统管理员决定。常用于给所有用户送信息,比如计划中的关机时间警告消息。

/etc/mtab

当前加载的文件系统的列表。最初是由启动引导描述文件所设置,并由mount命令自动地更新。当需要一个已加载文件系统列表时被使用,例如,在df命令中使用。

/etc/shadow

安装了影子(shadow)口令软件的系统中的影子口令文件。影子口令将加密的口令从/etc/passwd中移入/etc/shadow中;后者只有root用户才能读取。这使得破解口令变的极其困难。

/etc/login.defs

login命令的配置文件。

/etc/printcap

与/etc/termcap相类似,但用于打印机。具有不同的语法。

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

Bourne或C shell在登录或启动时所执行的文件。系统管理员可以使用它为所有用户设置全局设置值。对于各个shell参见各自的manual page。

/etc/securetty

确定安全终端,也即,确定能以root登录的终端。典型地,只有虚拟终端被列入,因此从调制解调器或网络侵入系统以获得超级用户的权限几乎是不可能的事(至少是非常困难的)。

/etc/shells

列出可信赖的shell。Chsh命令允许用户改变他们的登录shell为shells中所列出的shell之一。一台机器的提供FTP服务的服务器进程ftpd,将检查用户的shell是否在/etc/shells中被列出。除非用户的shell被列出,否则系统将阻止该用户的登录。

/etc/termcap

终端性能数据库。描述了各种终端可被哪些“escape序列”所控制。取代那些直接输出的只能工作于一种特殊牌子的终端上的逃逸序列(escape sequence)的程序已经写出,该程序在/etc/termcap中查询正确的序列来工作。其结果就是许多程序能够在绝大多数的终端上使用。详细信息参见termcap、curs_termcap以及terminfo的manual pages。
 
/dev目录
/dev目录包含所有设备的特殊设备文件。设备文件是以特定规则命名的文件;它们在设备列表(见XXX)中进行了描述。设备文件是在系统安装时创建的,以后是由/dev/MAKEDEV描述文件来创建。/dev/MAKEDEV.local是由系统管理员写的描述文件,用以建立仅是本地的设备文件或连接文件(也即,那些不是标准MAKEDEV中的部分,如有些非标准设备驱动程序的设备文件)。
 
/usr文件系统
/ usr文件系统通常很大,因为所有的程序都安装于此。/usr中的所有文件通常来自Linux发行版;本地安装的程序以及其它程序都放在/usr/local下。这使得从发行的一个新版中更新系统成为可能,甚至完全更新至新版而无须再次安装所有的程序。下面列出了/usr中的一些子目录(有些不很重要的子目录这里没有列出,详细信息参见FSSTND)。

/usr/x11R6

X窗口系统,所有文件。为了简化X的开发与安装,X的文件并没有集成到系统的其余部分中去。在/usr/x11R6下有个目录树,与/usr下的相类似。

/usr/X386

与/usr/X11R6类似,但是是X11版本5。

/usr/bin

几乎所有的用户命令。有些命令在/bin或/usr/local/bin之中。

/usr/sbin

系统管理命令,是根文件系统不需要的,例如,绝大多数的服务器程序。

/usr/man,/usr/info,/usr/doc

随机手册(manual pages),GNU 信息文档以及各种其它的文档资料。

/usr/include

C编程语言的头文件。为了一致性这本应位于/usr/lib之下,但是传统的习惯势力一直支持这样的命名。

/usr/lib

程序和子系统的不变数据文件,包括一些场所配置文件。名字lib来源于library;最初的编程子程序库是存于/usr/lib中。

/usr/local

这个地方用于存放本地安装的软件和其它一些文件。
 
/var文件系统
/var中包含着数据文件,当系统正常运行时,这些数据文件是变化的。对于每个系统来说它是特定的,也即,不能在网络上与其它计算机共享这些数据文件。

/var/catman

用于格式化过的man pages的高速缓冲。Manual pages的原始资料通常是存放在/usr/man/man*中的;有些manual pages是以预格式化的版本形式给出的,存储于/usr/man/chat*中。其它一些manual pages在第一次使用时需要进行格式化处理;格式化过的版本就被存于/var/man目录中,因此下一个人阅读同样的page时就不用等待格式化过程了。(/var/catman的内容如同临时目录一样常常被清理的。)

/var/lib

当系统正常运行时改动过的文件。

/var/local

安装于/usr/local中的程序的可变的数据(也即,由系统管理员安装的程序)。注意,即使是本地安装的程序也应该使用/var的其它目录,例如,/var/lock。

/var/lock

上锁文件(锁定的文件)。许多程序遵循一个惯例,在/var/lock目录中建立上锁文件,用以指出它们正在使用一个特殊的设备或文件。其它的程序将会注意到这一点并会避免再使用这个特殊的设备或文件。

/var/log

各种程序的操作记录文件,特别是login(/var/log/wtmp,该文件中记录了所有的对系统的登录和退出)以及syslog(/var/log/messages,这里存储了内核和系统程序所有的消息)。/var/log中的文件经常会变得很大,需要定期进行清理。

/var/run

含有有关系统信息的文件,这些信息在系统下一次启动之前一直有效。例如,/var/run/utmp中含有当前登录的人的信息。

/var/spool

用于邮件、新闻、打印队列以及其它排队工作的目录。每个不同的spool在/var/spool下面都有自己的子目录,例如,用户邮件箱在/var/spool/mail之中。

/var/tmp

大的临时文件或者需要比在/tmp中更长期存在的临时文件。(尽管系统管理员可能不允许很陈旧的文件存在于/var/tmp中。)
 
/proc文件系统
/proc文件系统是一个幻影文件系统,它在磁盘上并不存在。相反地,内核在内存中创建了它。它用于提供有关系统的信息(最初是关于处理器的,因此有了此名称)。一些重要的文件和目录在下面给出了说明。在manual page的proc中有更详细的说明。

/proc/1

是一个有关进程1信息的目录。每一个进程在/proc下面都有一个以其进程号为名称的目录。

/proc/cpuinfo

有关处理器的信息,如它的类型、制造日期、型号以及性能。

/proc/devices

配置进当前运行内核的设备驱动程序的列表。

/proc/dma

显示当前哪个DMA通道正在被使用。

/proc/filesystems

配置进内核的文件系统。

/proc/interrupts

显示哪些中断被使用以及它们使用了多少次。

/proc/ioports

显示此时那些端口正被使用着。

/proc/kcore

是系统物理内存的一个映像。它的大小与你的物理内存完全一样,但实际上并不真正占据那样多的内存;他是在程序访问它时瞬时产生的。(记住:除非你将其复制到别的地方去,否则它在/proc下不占用任何磁盘空间。)

/proc/kmsg

内核输出的消息。这些消息同样也被送到了syslog中。

/proc/ksyms

内核的符号表。

/proc/loadavg

系统的“平均负荷”;是三个毫无意义的指示值,指示出此时系统有多少工作要做。

/proc/meminfo

物理内存和交换区使用情况的信息。

/proc/modules

此时哪些内核模块被加载。

/proc/net

网络协议的状态信息。

/proc/self

一个进程目录的符号连接,该进程属于在/proc中查看信息的程序的。当两个进程在观察/proc时,它们取得不同的连接。这主要是为了方便程序观察它们自己的进程目录。

/proc/stat

有关系统的静态参数,如系统自启动以来的页故障(page faults)数。

/proc/uptime

系统启动的时间。

/proc/version

内核版本。

可以注意到,虽然以上文件基本上是易读的文本文件,这些文件的格式有时可能还是难于理解。有许多命令就只是读入上述文件并格式化成利于理解的格式。例如,free程序读入/proc/meminfo信息并将字节数转换成千字节(同时也加入了少量的信息)。


转载自:http://linux.chinaunix.net/techdoc/system/2006/02/20/927930.shtml

0 0
原创粉丝点击