Linux目录结构
在FHS(Filesystem Hierarchy Standard )定义下,文件系统的交互形态如下所示
可分享的 | 不可分享的 | |
---|---|---|
不变的 | /usr(软件放置处) | /etc(配置文件) |
/opt(第三方协力软件) | /boot(开机和核心档) | |
可变动的 | /var/mail(使用者邮件信箱) | /var/run(程序相关) |
/var/spool/news(新闻组) | /var/lock(程序相关) |
在Linux系统中,我们见到的都是树形结构;比如操作系统安装在一个文件系统中,他表现为由/ 起始的树形结构。linux文件系统的最顶端是/,我们称/为Linux的root,也就是 Linux操作系统的文件系统。Linux的文件系统的入口就是/,所有的目录、文件、设备都在/之下,/就是Linux文件系统的组织者,也是最上级的领导者。
根目录
根目录下应该包含有
-
/bin
放置单人维护模式下能够被操作的指令。底下的指令可以被root与一般账号所使用,主要有cat, chmod, chown, date, mv, mkdir, cp, bash等常用指令 -
/boot
放置开机会使用到的档案,包括Linux核心档案以及开机选单与开机所需设定档案,常用档案为vmlinuz,如果使用的是grub开机管理程式,还会存在/boot/grub这个目录 -
/dev
在Linux系统中,任何装置与周边设备以档案的形态存在与这个目录中。包含有/dev/null, /dev/zero, /dev/tty , /dev/lp*, / dev/hd*, /dev/sd* -
/etc
主要的设定档都放在这个目录内,包含有人员的账号密码档,各种服务起始档。一般使用者可以查阅,只有root有权利修改,FHS建议不要放置可执行档在该目录。
其中有/etc/inittab, /etc/init.d/, /etc/modprobe.conf, /etc/X11/, /etc/fstab, /etc/sysconfig/等等。 另外,其下重要的目录有:/etc/init.d/ :所有服务的预设启动script都是放在这里的,例如要启动或者关闭iptables的话: /etc/init.d/iptables start、/etc/init.d/ iptables stop
/etc/xinetd.d/ :这就是所谓的super daemon管理的各项服务的设定档目录。
/etc/X11/ :与X Window有关的各种设定档都在这里,尤其是xorg.conf或XF86Config这两个X Server的设定档。 -
/home
系统预设的使用者家目录(home directory)。 在你新增一个一般使用者帐号时,预设的使用者家目录都会规范到这里来。比较重要的是,家目录有两种代号:
~ :代表当前使用者的家目录,而 ~guest:则代表用户名为guest的家目录。 -
/lib
/lib放置的则是在开机时会用到的函式库,以及在/bin或/sbin底下的指令会呼叫的函式库而已 。 尤其重要的是/lib/modules/这个目录,因为该目录会放置核心相关的模组(驱动程式)。 -
/media
media是媒体的英文,顾名思义,这个/media底下放置的就是可移除的装置。 包括软碟、光碟、DVD等等装置都暂时挂载于此。 常见的档名有:/media/floppy, /media/cdrom等等。 -
/mnt
想要暂时挂载某些额外的装置,一般建议可以放置到这个目录中。在古早时候,这个目录的用途与/media相同啦。 只是有了/media之后,这个目录就用来暂时挂载用了。 -
/opt
给第三方协力软体放置的目录 。 什么是第三方协力软体啊?举例来说,KDE这个桌面管理系统是一个独立的计画,不过他可以安装到Linux系统中,因此KDE的软体就建议放置到此目录下了。要自行安装额外的软体(非原本的distribution提供的),那么也能够将你的软体安装到这里来。 不过,以前的Linux系统中,我们还是习惯放置在/usr/local目录下。 -
/root
系统管理员(root)的家目录。 之所以放在这里,是因为如果进入单人维护模式而仅挂载根目录时,该目录就能够拥有root的家目录,所以我们会希望root的家目录与根目录放置在同一个分区中。 -
/sbin
指令是用来设定系统环境的,这些指令只有root才能够利用来设定系统,里面包括了开机、修复、还原系统所需要的指令。至于某些伺服器软体程式,一般则放置到/usr/sbin/当中。至于本机自行安装的软体所产生的系统执行档(system binary),则放置到/usr/local/sbin/当中了。常见的指令包括:fdisk, fsck, ifconfig, init, mkfs等等。 -
/srv
srv可以视为service的缩写,是一些网路服务启动之后,这些服务所需要取用的资料目录。 常见的服务例如WWW, FTP等等。 -
/tmp
让一般使用者或者是正在执行的程序暂时放置档案的地方。这个目录是任何人都能够存取的,所以你需要定期的清理一下。
根目录下与开机过程有关的目录, 就不能够与根目录放到不同的分区去。那哪些目录不可与根目录分开呢?有底下这些:
/etc:配置文件
/bin:重要执行档
/dev:所需要的装置文件
/lib:执行档所需的函式库与核心所需的模块
/sbin:重要的系统执行文件
这五个目录千万不可与根目录分开在不同的分区。
/usr 目录
/usr不是user的缩写,其实usr是Unix Software Resource的缩写, 也就是Unix操作系统软件资源所放置的目录
-
/usr/bin/
绝大部分的用户可使用指令都放在这里。请注意到他与/bin的不同之处。(是否与开机过程有关) -
/usr/include/
c/c++等程序语言的档头(header)与包含档(include)放置处 -
/usr/lib/
包含各应用软件的函式库、目标文件(object file),以及不被一般使用者惯用的执行档或脚本(script)。 某些软件会提供一些特殊的指令来进行服务器的设定,这些指令也不会经常被系统管理员操作, 那就会被摆放到这个目录下 -
/usr/local/
管理员在本机自行安装自己下载的软件(非distribution默认提供者),建议安装到此目录, 这样会比较便于管理 -
/usr/sbin/
非系统正常运作所需要的系统指令。 -
/usr/share/
放置共享文件的地方,在这个目录下放置的数据几乎是不分硬件架构均可读取的数据 -
/usr/src/
一般原始码建议放置到这里
/var 目录
/var就是在系统运作后才会渐渐占用硬盘容量的目录。 因为/var目录主要针对常态性变动的文件,包括缓存(cache)、登录档(log file)以及某些软件运作所产生的文件, 包括程序文件(lock file, run file),或者例如MySQL数据库的文件等等。常见的次目录有:
-
/var/cache/
应用程序本身运作过程中会产生的一些暂存档 -
/var/lib/
程序本身执行的过程中,需要使用到的数据文件放置的目录。 -
/var/lock/
某些装置或者是文件资源一次只能被一个应用程序所使用,如果同时有两个程序使用该装置时, 就可能产生一些错误的状况,因此就得要将该装置上锁(lock),以确保该装置只会给单一软件所使用。 -
/var/log/
登录文件放置的目录。 -
/var/mail/
放置个人电子邮件信箱的目录 -
/var/run/
某些程序或者是服务启动后,会将他们的PID放置在这个目录下 -
/var/spool/
这个目录通常放置一些队列数据,所谓的“队列”就是排队等待其他程序使用的数据。 这些数据被使用后通常都会被删除。
目录树
以上内容参考该文章
参考文献