Linux目录结构
tree命令以树状图列出当前目录结构


那哪些目录不可与根目录分开呢?有底下这些:
/etc:配置文件
/bin:重要执行档
/dev:所需要的装置文件
/lib:执行档所需的函式库与核心所需的模块
/sbin:重要的系统执行文件
这五个目录千万不可与根目录分开在不同的分区。
二. /usr 的意义与内容:
/usr不是user的缩写,其实usr是Unix Software Resource的缩写, 也就是Unix操作系统软件资源所放置的目录,而不是用户的数据啦。这点要注意。因为是所有系统默认的软件(distribution发布者提供的软件)都会放置到/usr底下,因此这个目录有点类似Windows 系统的C:\Windows\ + C:\Program files\这两个目录的综合体,系统刚安装完毕时,这个目录会占用最多的硬盘容量。 一般来说,/usr的次目录建议有底下这些:
|
目录 |
应放置文件内容 |
|
/usr/X11R6/ |
为X Window System重要数据所放置的目录,之所以取名为X11R6是因为最后的X版本为第11版,且该版的第6次释出之意。
|
|
/usr/bin/ |
绝大部分的用户可使用指令都放在这里。请注意到他与/bin的不同之处。(是否与开机过程有关) |
|
/usr/include/ |
c/c++等程序语言的档头(header)与包含档(include)放置处,当我们以tarball方式 (*.tar.gz 的方式安装软件)安装某些数据时,会使用到里头的许多包含档。
|
|
/usr/lib/ |
包含各应用软件的函式库、目标文件(object file),以及不被一般使用者惯用的执行档或脚本(script)。 某些软件会提供一些特殊的指令来进行服务器的设定,这些指令也不会经常被系统管理员操作, 那就会被摆放到这个目录下啦。要注意的是,如果你使用的是X86_64的Linux系统, 那可能会有/usr/lib64/目录产生 |
|
/usr/local/ |
统管理员在本机自行安装自己下载的软件(非distribution默认提供者),建议安装到此目录, 这样会比较便于管理。举例来说,你的distribution提供的软件较旧,你想安装较新的软件但又不想移除旧版, 此时你可以将新版软件安装于/usr/local/目录下,可与原先的旧版软件有分别啦。 你可以自行到/usr/local去看看,该目录下也是具有bin, etc, include, lib...的次目录 |
|
/usr/sbin/ |
非系统正常运作所需要的系统指令。最常见的就是某些网络服务器软件的服务指令(daemon) |
|
/usr/share/ |
放置共享文件的地方,在这个目录下放置的数据几乎是不分硬件架构均可读取的数据, 因为几乎都是文本文件嘛。在此目录下常见的还有这些次目录:/usr/share/man:联机帮助文件 /usr/share/doc:软件杂项的文件说明 /usr/share/zoneinfo:与时区有关的时区文件
|
|
/usr/src/ |
一般原始码建议放置到这里,src有source的意思。至于核心原始码则建议放置到/usr/src/linux/目录下。 |
三. /var 的意义与内容:
/var目录主要针对常态性变动的文件,包括缓存(cache)、登录档(log file)以及某些软件运作所产生的文件, 包括程序文件(lock file, run file),或者例如MySQL数据库的文件等等。常见的次目录有:
|
目录 |
应放置文件内容 |
|
/var/cache/ |
应用程序本身运作过程中会产生的一些暂存档 |
|
/var/lib/ |
程序本身执行的过程中,需要使用到的数据文件放置的目录。在此目录下各自的软件应该要有各自的目录。 举例来说,MySQL的数据库放置到/var/lib/mysql/而rpm的数据库则放到/var/lib/rpm去 |
|
/var/lock/ |
某些装置或者是文件资源一次只能被一个应用程序所使用,如果同时有两个程序使用该装置时, 就可能产生一些错误的状况,因此就得要将该装置上锁(lock),以确保该装置只会给单一软件所使用。 举例来说,刻录机正在刻录一块光盘,你想一下,会不会有两个人同时在使用一个刻录机烧片? 如果两个人同时刻录,那片子写入的是谁的数据?所以当第一个人在刻录时该刻录机就会被上锁, 第二个人就得要该装置被解除锁定(就是前一个人用完了)才能够继续使用 |
|
/var/log/ |
非常重要。这是登录文件放置的目录。里面比较重要的文件如/var/log/messages, /var/log/wtmp(记录登入者的信息)等。 |
|
/var/mail/ |
放置个人电子邮件信箱的目录,不过这个目录也被放置到/var/spool/mail/目录中,通常这两个目录是互为链接文件。 |
|
/var/run/ |
某些程序或者是服务启动后,会将他们的PID放置在这个目录下 |
|
/var/spool/ |
这个目录通常放置一些队列数据,所谓的“队列”就是排队等待其他程序使用的数据。 这些数据被使用后通常都会被删除。举例来说,系统收到新信会放置到/var/spool/mail/中, 但使用者收下该信件后该封信原则上就会被删除。信件如果暂时寄不出去会被放到/var/spool/mqueue/中, 等到被送出后就被删除。如果是工作排程数据(crontab),就会被放置到/var/spool/cron/目录中。 |
四. 目录树(directory tree) :
在Linux底下,所有的文件与目录都是由根目录开始的。那是所有目录与文件的源头, 然后再一个一个的分支下来,因此,我们也称这种目录配置方式为:目录树(directory tree), 这个目录树的主要特性有:
- 目录树的启始点为根目录 (/, root);
- 每一个目录不止能使用本地端的 partition 的文件系统,也可以使用网络上的 filesystem 。举例来说, 可以利用 Network File System (NFS) 服务器挂载某特定目录等。
- 每一个文件在此目录树中的文件名(包含完整路径)都是独一无二的。
五. 绝对路径与相对路径
除了需要特别注意的FHS目录配置外,在文件名部分我们也要特别注意。因为根据档名写法的不同,也可将所谓的路径(path)定义为绝对路径(absolute)与相对路径(relative)。 这两种文件名/路径的写法依据是这样的:
绝对路径:
由根目录(/)开始写起的文件名或目录名称, 例如 /home/dmtsai/.bashrc;
相对路径:
相对于目前路径的文件名写法。 例如 ./home/dmtsai 或 http://www.cnblogs.com/home/dmtsai/ 等等。反正开头不是 / 就属于相对路径的写法
而你必须要了解,相对路径是以你当前所在路径的相对位置来表示的。举例来说,你目前在 /home 这个目录下, 如果想要进入 /var/log 这个目录时,可以怎么写呢?
cd /var/log (absolute)
cd ../var/log (relative)
因为你在 /home 底下,所以要回到上一层 (../) 之后,才能继续往 /var 来移动的,特别注意这两个特殊的目录:
. :代表当前的目录,也可以使用 ./ 来表示;
.. :代表上一层目录,也可以 ../ 来代表。
这个 . 与 .. 目录概念是很重要的,你常常会看到 cd .. 或 ./command 之类的指令下达方式, 就是代表上一层与目前所在目录的工作状态。
实例1:如何先进入/var/spool/mail/目录,再进入到/var/spool/cron/目录内?
命令:
cd /var/spool/mail
cd ../cron
说明:
由于/var/spool/mail与/var/spool/cron是同样在/var/spool/目录中。如此就不需要在由根目录开始写起了。这个相对路径是非常有帮助的,尤其对于某些软件开发商来说。 一般来说,软件开发商会将数据放置到/usr/local/里面的各相对目录。 但如果用户想要安装到不同目录呢?就得要使用相对路径。
实例2:网络文件常常提到类似./run.sh之类的数据,这个指令的意义为何?
说明:
由于指令的执行需要变量的支持,若你的执行文件放置在本目录,并且本目录并非正规的执行文件目录(/bin, /usr/bin等为正规),此时要执行指令就得要严格指定该执行档。./代表本目录的意思,所以./run.sh代表执行本目录下, 名为run.sh的文件。
其他文件系统的安装点。
下面详细介绍
-
/etc文件系统
/etc 目录包含各种系统配置文件,下面说明其中的一些。其他的你应该知道它们属于哪个程序,并阅读该程序的m a n页。许多网络配置文件也在/etc 中。
- /etc/rc或/etc/rc.d或/etc/rc?.d
启动、或改变运行级时运行的脚本或脚本的目录。 - /etc/passwd
用户数据库,其中的域给出了用户名、真实姓名、用户起始目录、加密口令和用户的其他信息。 - /etc/fdprm
软盘参数表,用以说明不同的软盘格式。可用setfdprm 进行设置。更多的信息见setfdprm的帮助页。 - /etc/fstab
指定启动时需要自动安装的文件系统列表。也包括用swapon -a启用的s w a p区的信息。 - /etc/group
类似/etc/passwd ,但说明的不是用户信息而是组的信息。包括组的各种数据。 - /etc/inittab
init 的配置文件。 - /etc/issue
包括用户在登录提示符前的输出信息。通常包括系统的一段短说明或欢迎信息。具体内容由系统管理员确定。 - /etc/magic
“file”的配置文件。包含不同文件格式的说明,“file”基于它猜测文件类型。 - /etc/motd
motd是message of the day的缩写,用户成功登录后自动输出。内容由系统管理员确定。常用于通告信息,如计划关机时间的警告等。 - /etc/mtab
当前安装的文件系统列表。由脚本(scritp)初始化,并由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 shells执行的文件。这允许系统管理员为所有用户建立全局缺省环境。 - /etc/securett
确认安全终端,即哪个终端允许超级用户(root )登录。一般只列出虚拟控制台,这样就不可能(至少很困难)通过调制解调器(modem)或网络闯入系统并得到超级用户特权。 - /etc/shells
列出可以使用的shell。chsh 命令允许用户在本文件指定范围内改变登录的shell。提供一台机器ftp服务的服务进程ftpd 检查用户shell是否列在/etc/shells 文件中,如果不是,将不允许该用户登录。 - /etc/termcap
终端性能数据库。说明不同的终端用什么“转义序列”控制。写程序时不直接输出转义序列(这样只能工作于特定品牌的终端),而是从/etc/termcap 中查找要做的工作的正确序列。
这样,多数的程序可以在多数终端上运行。
-
/dev文件系统
/dev 目录包括所有设备的设备文件。设备文件用特定的约定命名,这在设备列表中说明。设备文件在安装时由系统产生,以后可以用/dev/makedev 描述。/dev/makedev.local是系统管理员为本地设备文件(或连接)写的描述文稿(即如一些非标准设备驱动不是标准makedev 的一部分)。下面简要介绍/dev下一些常用文件。
- /dev/console
系统控制台,也就是直接和系统连接的监视器 - /dev/hd
i d e硬盘驱动程序接口。如: /dev/hda指的是第一个硬盘, had1则是指/dev/hda的第一个分区。如系统中有其他的硬盘,则依次为/dev /hdb、/dev/hdc、. . . . ..;如有多个分区则依次为hda1、hda2 . . . . . . - /dev/sd
scsi磁盘驱动程序接口。如有系统有scs i硬盘,就不会访问/dev/had而会访问/dev/sda。 - /dev/fd
软驱设备驱动程序。如: /dev/fd0指系统的第一个软盘,也就是通常所说的a:盘,/dev/fd1指第二个软盘,. . . . . .而/dev/ f d 1 h 1 4 40则表示访问驱动器1中的4 . 5高密盘。 - /dev/st
s c s i磁带驱动器驱动程序。 - /dev/tty
提供虚拟控制台支持。如: /dev/tty1指的是系统的第一个虚拟控制台, /dev/tty2则是系统的第二个虚拟控制台。 - /dev/pty
提供远程登陆伪终端支持。在进行telnet登录时就要用到/dev/pty设备。 - /dev/ttys
计算机串行接口,对于dos来说就是“com1”口。 - /dev/cua
计算机串行接口,与调制解调器一起使用的设备。 - /dev/null
“黑洞”,所有写入该设备的信息都将消失。例如:当想要将屏幕上输出信息隐藏起来时,只要将输出信息输入到/dev/null中即可。
-
/usr文件系统
/usr 是个很重要的目录,通常这一文件系统很大,因为所有程序安装在这里。/usr 里的所有文件一般来自linux发行版(distribution);本地安装的程序和其他东西在/usr/local 下,因为这样可以在升级新版系统或新发行版时无须重新安装全部程序。/usr目录下的许多内容是可选的,但这些功能会使用户使用系统更加有效。/usr可容纳许多大型的软件包和它们的配置文件。下面列出一些重要的目录(一些不太重要的目录被省略了)。
- /usr/x11r6
包含x wi n d o w系统的所有可执行程序、配置文件和支持文件。为简化x的开发和安装,x的文件没有集成到系统中。xwindow系统是一个功能强大的图形环境,提供了大量的图形工具程序。用户如果对microsoftwindows或machintosh比较熟悉的话,就不会对xwindow系统感到束手无策了。 - /usr/x386
类似/usr/x11r6 ,但是是专门给x 11 release5的。 - /usr/bin
集中了几乎所有用户命令,是系统的软件库。另有些命令在/bin 或/usr/local/bin 中。 - /usr/sbin
包括了根文件系统不必要的系统管理命令,例如多数服务程序。 - /usr/man、/usr/info、/usr/doc
这些目录包含所有手册页、gnu信息文档和各种其他文档文件。每个联机手册的“节”都有两个子目录。例如: /usr/man/man1中包含联机手册第一节的源码(没有格式化的原始文件),/usr/man/cat1包含第一节已格式化的内容。l联机手册分为以下九节:内部命令、系统调用、库函数、设备、文件格式、游戏、宏软件包、系统管理和核心程序。 - /usr/include
包含了c语言的头文件,这些文件多以. h结尾,用来描述c语言程序中用到的数据结构、子过程和常量。为了保持一致性,这实际上应该放在/usr/lib 下,但习惯上一直沿用了这个名字。 - /usr/lib
包含了程序或子系统的不变的数据文件,包括一些site - wide配置文件。名字lib来源于库(library); 编程的原始库也存在/usr/lib 里。当编译程序时,程序便会和其中的库进行连接。也有许多程序把配置文件存入其中。 - /usr/local
本地安装的软件和其他文件放在这里。这与/usr很相似。用户可能会在这发现一些比较大的软件包,如tex、emacs等。
-
/var文件系统
/var 包含系统一般运行时要改变的数据。通常这些数据所在的目录的大小是要经常变化或扩充的。原来/var目录中有些内容是在/usr中的,但为了保持/usr目录的相对稳定,就把那些需要经常改变的目录放到/var中了。每个系统是特定的,即不通过网络与其他计算机共享。下面列出一些重要的目录(一些不太重要的目录省略了)。
- /var/catman
包括了格式化过的帮助(man )页。帮助页的源文件一般存在/usr/man /man中;有些man页可能有预格式化的版本,存在/usr/man/cat中。而其他的man页在第一次看时都需要格式化,格式化完的版本存在/var/man 中,这样其他人再看相同的页时就无须等待格式化了。(/var/catman 经常被清除,就像清除临时目录一样。) - /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/spool
放置“假脱机( spool)”程序的目录,如mail、news、打印队列和其他队列工作的目录。每个不同的spool在/var/spool 下有自己的子目录,例如,用户的邮箱就存放在/var/spool/mail中。 - /var/tmp
比/tmp 允许更大的或需要存在较长时间的临时文件。注意系统管理员可能不允许/var/tmp 有很旧的文件。
-
/proc文件系统
/proc 文件系统是一个伪的文件系统,就是说它是一个实际上不存在的目录,因而这是一个非常特殊的目录。它并不存在于某个磁盘上,而是由核心在内存中产生。这个目录用于提供关于系统的信息。下面说明一些最重要的文件和目录(/proc 文件系统在proc man页中有更详
细的说明)。
- /proc/x
关于进程x的信息目录,这一x是这一进程的标识号。每个进程在/proc 下有一个名为自
己进程号的目录。 - /proc/cpuinfo
存放处理器( cpu )的信息,如cpu的类型、制造商、型号和性能等。 - /proc/devices
当前运行的核心配置的设备驱动的列表。 - /proc/dma
显示当前使用的dma通道。 - /proc/filesystems
核心配置的文件系统信息。 - /proc/interrupts
显示被占用的中断信息和占用者的信息,以及被占用的数量。 - /proc/ioports
当前使用的i / o端口。 - /proc/kcore
系统物理内存映像。与物理内存大小完全一样,然而实际上没有占用这么多内存;它仅仅是在程序访问它时才被创建。(注意:除非你把它拷贝到什么地方,否则/proc 下没有任何东西占用任何磁盘空间。) - /proc/kmsg
核心输出的消息。也会被送到syslog。 - /proc/ksyms
核心符号表。 - /proc/loadavg
系统“平均负载”; 3个没有意义的指示器指出系统当前的工作量。 - /proc/meminfo
各种存储器使用信息,包括物理内存和交换分区( swap )。 - /proc/modules
存放当前加载了哪些核心模块信息。 - /proc/net
网络协议状态信息。 - /proc/self
存放到查看/proc 的程序的进程目录的符号连接。当2个进程查看/proc 时,这将会是不同的连接。这主要便于程序得到它自己的进程目录。 - /proc/stat
系统的不同状态,例如,系统启动后页面发生错误的次数。 - /proc/uptime
系统启动的时间长度。 - /proc/version
核心版本

浙公网安备 33010602011771号