linux 系统目录结构
# 目录结构层次
- /
- home
- root
- bin
- sbin
- usr
- bin
- sbin
- lib
- local
- share
- opt
- boot
- dev
- etc
- sysconfig
- proc
- lib
- modules
- var
- lib
- local
- log
- tmp
- cache
- lock
- run
- spool
- tmp
# /
系统根目录, 一般只存放目录,/etc
/bin
/dev
/lib
/sbin
等目录应该和根目录放置在一个分区中。
# /home
用户的主目录,一般该目录名是以用户的账号命名的。
# /root
系统管理员(root)的主目录。
# /bin, /usr/bin
可执行二进制文件的目录,包含系统管理员和用户都可以使用的命令 ls
tar
mv
cat
等。
/bin
和 /usr/bin
区别, /bin
是所有用户都可以访问并执行的可执行程序, /usr/bin
是后期安装的一些软件的可执行程序。
# /sbin, /usr/sbin, /usr/local/sbin
/sbin
用于放置系统管理员使用的可执行命令,包括启动、恢复或修复系统所必需的二进制文件,例如: fdisk
reboot
fsck
ifconfig
shutdown
等。
系统管理员使用的所有非必需二进制文件通常放在 /usr/sbin
中,本地安装的系统管理程序应该放在 /usr/local/sbin
中。
# /usr
/usr (unix software resource)
, 里面存放的数据属于可共享(shareable)的和不可变动的(static),所有系统默认的软件(distribution 发布者提供的软件)都会放置到 /usr 下。
/usr/bin
存放后期安装的一些软件的可执行程序。
/usr/sbin
非系统正常运行所需要的二进制可执行程序文件。如某些朋务器软件的服务指令 daemon
。
/usr/lib
存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。
/usr/local
存放系统管理员在本机自行安装自己下载的软件(非 distribution 默认提供的),建议安装到此目录,这样会比较便于管理。
/usr/share
存放共享数据,如 /usr/share/doc
系统说明文件存放目录 /usr/share/man
程序说明文件存放目录。
# /opt
用于存放第三方软件安装程序的目录。例如自行安装额外的软件(非distribution提供的)可以安装到这里来。 不过,以前的 linux 系统中,我们还是习惯安装在/usr/local
目录下。
# /boot
放置 linux 系统启动时用到的一些文件。如 /boot/vmlinuz
为 linux 的内核文件。
# /dev
存放 linux 系统下的设备与特殊文件,任何装置与接口设备都是以档案的形式存在于这个目录当中的。
你只要通过存取这个目录下的某个档案,就等二存取某个装置, 例如下面的档案有/dev/null
, /dev/zero
, /dev/tty
等。
# /etc
系统主要的配置文件存放该目录,如用户的账号密码文件。
一般来说,该目录下的文件是可以让一般使用者查阅的,但是只有 root 有权力修改。
FHS建议不要将可执行文件(binary)放在这个目录中,重要的配置文件有 /etc/inittab
/etc/fstab
/etc/init.d
/etc/sysconfig
等。
# /proc
该目录本身是一个“虚拟文件系统(virtual filesystem)”,目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有 /proc/cpuinfo
/proc/interrupts
/proc/dma
/proc/ioports
/proc/net
等。
# /lib, /usr/lib, /usr/local/lib
系统使用的函数库的目录。
/lib
存放的是在开机时会用到的函数库,以及在/bin
或/sbin
下的指令会调用的函数库。 尤其重要的是/lib/modules/
这个目录,因为该目录会放置核心相关的模块(驱劢程序)。
/usr/lib
包含各应用软件的函数库、目标档案,以及不被一般使用者惯用的脚本。 某些软件会提供一些特殊的指令来进行服务器的设置,这些指令也不会常被系统管理员使用, 那就会被放到这个目录下, 如果你使用的是64位的Linux系统,那可能会有/usr/lib64/
目录出现。
/usr/local/lib
存放系统管理员在本机下载安装第三方软件的函数库。
# /var
存放系统执行过程中经常变化的文件,包括 spool 目录和文件、日志数据,以及临时文件等。
/var/lib
存放系统正常运行时要改变的文件。 程序本身执行的过程中要使用到的数据文件放置的目录,在此目录下各自的软件应该要有各自的目录。 例如,MySQL的数据库放置到 /var/lib/mysql/
而 rpm 的数据库则放到 /var/lib/rpm
中。
/var/local
存放 /usr/local
中安装程序的可变数据(即系统管理员安装的程序)。
/var/log
此目录包含各种日志文件,大多数日志应该写到这个目录或适当的子目录,里面比较重要的文件如 /var/log/messages
(纪录所有核心和系统程序信息) /var/log/wtmp
(记录登录和注销的信息)等。
/var/tmp
用于存放临时文件或系统重新引导之间保留的目录,与 /tmp
比较允许更大或需要存在较长时间的临时文件。
/var/cache
应用程序运行过程中的一些缓存数据。
/var/lock
文件锁,某些装置或文件资源一次只能被一个应用程序所使用,如果同时有两个程序使用该装置时, 就可能产生一些错误的状况,因此就得要将该装置上锁(lock),以确保该装置只会给单一软件所使用。
/var/mail
邮件存放的目录,不过这个目录也被放置到 /var/spool/mail/
中,通常这两个目录是互为链接文件。
/var/run
存储运行时变化数据,程序或服务启动后,其 PID 存放在该目录下。
/var/spool
包含正在等待某种后续处理的数据,通常这些数据被使用后都会被删除。
# /tmp
用于存放各种临时文件,公用的临时文件存储点。
参考: http://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.html 《鸟哥的Linux私房菜》