关于FSSTND标准
Linux 是一个类似 Unix 的操作系统,Unix 要早于 Linux,Linux 的初衷就是要替代 UNIX,并在功能和用户体验上进行优化,所以 Linux 模仿了 UNIX(但并没有抄袭 UNIX 的源码),使得 Linux 在外观和交互上与 UNIX 非常类似。
在早期UNIX系统中各个厂家的文件名都是不统一的,虽然都是以 / 为根的树装式文件结构,/ 是根目录但是当时并不像现在是统一的 /etc /home /bin等。
为了避免在Linux系统也出现这种命名混乱的情况,1944年推出了FSSTND的Linux文件系统层次结构标准,后来UNIX团队将FSSTND发扬光大,成为了后来的FHS规定。现在的Linux发行版基本都遵循FHS规定
但是,FHS 仅仅定义了两层规范,第一层是 / 下面的各个目录要放什么文件数据,比如 /etc 下面需要放设置文件,/bin 和 /sbin 下面需要放可执行文件等;第二层是针对 /usr 和 /var 这两个目录来定义的,比如 /usr/share 需要放共享数据等。
FHS规范
根目录是整个系统中最重要的一个目录,后续的目录都是以根目录为基础进行衍生,更重要的一点,根目录与开机、还原、系统修复有关,由于系统开机需要特定的环境,所以系统出现错误时,根目录也必须要包含有能够修复文件系统的程序才行。所以 FHS 规定不要将根目录的分区大小设置的过大,实际上是越小越好,以减少出错率。
/home
/home 目录是系统默认的使用者主文件夹(home directory)。
/boot
/boot 目录包含启动操作系统所需的静态文件,比如 Linux 内核,这些文件对系统的启动至关重要。Linux Kernel 常用的文件名为 vmlinuz, 但是如果你使用的是 grub2 这个开机程序,还会存在 /boot/grub2 这个目录。
如果你技术并不是很高,千万不要随意更改删除该文件夹下的文件
/dev
/dev 目录都是一些设备节点,这些设备节点是 Linux 系统中的设备或者是内核提供的虚拟设备。这些设备节点同样也对系统正常运行至关重要。/dev 目录和子目录下的设备是字符设备和块设备。字符设备就是鼠标、键盘、调制解调器,块设备就是硬盘、软盘驱动器。存储 /dev 目录下的文件就相当于是存储某个设备。
比较重要的文件有
/dev/hda:主 IDE 通道上的主设备,当提到 IDE/ATA 硬盘时,主通道是第一和第二驱动器连接到主板或接口卡的通道。
/dev/hdb:主 IDE 通道上的从设备。
/dev/tty0:第一个虚拟控制台。虚拟控制台又被称为 VC,也称为虚拟终端 VT,是用于计算机用户界面的键盘和显示器的概念组合。
/dev/tty1:第二个虚拟控制台。
/dev/sda:主 SCSI 和 SATA 通道上的第一个设备。
/dev/lp0:第一个并行端口。
/etc
/etc 目录是为计算机本地的配置文件保留的,系统主要的配置文件都放在这个目录下,比如账号密码,服务的启停,一般来说,这个目录下面一般用户只有读权限,只有 root 用户具有修改权限
/etc 下比较重要的几个文件有
/etc/modprobe.d 内核驱动模块
/etc/passwd 存储用户密码
/etc/fstab 存储挂载信息
/etc/issue 存储系统启动显示的内容
/etc 目录下不要存放二进制文件,二进制文件最好放在 /sbin 和 /bin 中。
/etc 目录下有两个重要的文件,/etc/x11 用于存放 X Window 系统配置文件,例如 xorg.conf,/etc/opt 这个主要存放第三方协力软件 /opt 的相关配置文件。
/lib
系统的函数库有很多,而 /lib 目录就像一个仓库,它用于存放执行 /bin 和 /sbin 中二进制文件所需要的库,这些共享库映像对于系统 boot 和执行根文件系统中的命令特别重要。
/media
media 媒体的英文,也就是说 /media下可以存放用于可移动媒体(例如 USB、DVD、CD-ROM 和 Zip 磁盘)的安装点和子目录。
/mnt
如果你想要暂时挂载某些额外的设备,你可以放在 /mnt 这个目录下,其实最早的时候,/mnt 用途和 /media 一样,只是后来有了 /media 之后,这个目录就被用来临时挂载了。
/opt
/opt/ 目录为大多数应用程序软件包提供存储空间,将文件放置在 /opt/ 目录中的包会创建一个与包同名的目录。反过来,该目录保存了原本会分散在整个文件系统中的文件,从而为系统管理员提供了一种简单的方法来确定特定包中每个文件的角色。
/proc
/proc 目录本身是一个虚拟文件系统(virtual filesystem),他放置的数据是在内存中,比如系统核心信息,行程信息,周边设备网络状态等。因为这个目录下的数据都是在内存中的,所以本身不占用磁盘空间。
这个目录下比较重要的文件有 /proc/cpuinfo、/proc/dma、/proc/interrupts、/proc/net/。
/sbin
/sbin 目录存储 root 用户使用的可执行文件。/sbin 中的可执行文件在启动时使用,用于系统管理和执行系统恢复操作。除了 /bin 中的二进制之外,/sbin 还包含启动、恢复和修复系统所需要的二进制文件。
/sbin 目录下包含 arp、clock、halt、init、grub、ifconfig、route、shutdown 等。
/tmp
这个目录下面存放的都是一些临时文件,这些文件在系统重新启动时被清除。
/sys
这个目录其实和 /proc 非常类似,也是一个虚拟文件系统,主要是记录核心与系统硬件相关信息。这个目录同样也不占用磁盘空间。
/usr
/usr 目录是需要好好聊聊的一个目录了,很多读者都误以为 /usr 是 user 的缩写,其实 usr 是 Unix Software Resource 的缩写,FHS 建议软件开发者应该将数据合理的放置在这个目录的次目录下,不要自己创建软件独立的目录。
所有系统默认的软件都会放在 /usr 下面,因此这个目录有点类似 Windows 中的 C:\Windows\ + C:\Program files 这两个目录的综合,一般来说,系统刚安装完毕后,这个目录会占用较多的磁盘容量,/usr 的次目录建议有下面这些内容
/usr/bin/一般用户能够使用的指令都放在这个目录下,CentOS 7 开始,/usr/bin 下指令和 /bin 目录下指令一毛一样。
/usr/lib/基本上,与 /lib 功能相同,所以 /lib 就是链接到这个目录中的。
/usr/local 系统管理员在在本机下载的软件都建议安装到这个目录下,便于管理。
/usr/sbin 非系统正常运行所需要的系统指令,最常见的就是某些网络服务器软件的服务指令,不过基本功能与 /sbin 差不多,因此目前 /sbin 就是链接到此目录中的。
/usr/share 共享文件放置区,这个目录下还有这些次目录 /usr/share/man ,/usr/share/doc,/usr/share/zoneinfo
/usr/games 与游戏相关的数据放置处
/usr/include C/C++ 等程序语言的 header 和 include 放置处,也是直接链接的。
/usr/src 一般源码建议放在这,src 是 source 的意思,至于核心源码则建议放在 /usr/src/linux 目录下。
/run
早期的 FHS 规定系统开机后所产生的各项信息应该要放置到 /var/run 目录下,新版的 FHS 则规范到 /run 下面。
/var
如果说 /usr 是安装时会占用较大磁盘容量的目录,那么 /var就是在系统运行后才会渐渐占用磁盘容量的目录。/var 主要包括高速缓存、登录文件以及某些软件运行所产生的的目录,包括程序文件,例如 MySQL 数据库文件等,常见的目录有
/var/cache 应用程序缓存目录
/var/crash 系统错误信息
/var/log 日志记录
/var/run 进程的标识数据
/var/tmp 临时文件目录
/var/lock 文件锁定记录
/var/log
如果愿意在Linux环境方面花费些时间,首先就应该知道日志文件的所在位置以及它们包含的内容。在系统运行正常的情况下学习了解这些不同的日志文件有助于你在遇到紧急情况时从容找出问题并加以解决。
以下介绍的是20个位于/var/log/ 目录之下的日志文件。其中一些只有特定版本采用,如dpkg.log只能在基于Debian的系统中看到。
- /var/log/messages — 包括整体系统信息,其中也包含系统启动期间的日志。此外,mail,cron,daemon,kern和auth等内容也记录在var/log/messages日志中。
- /var/log/dmesg — 包含内核缓冲信息(kernel ring buffer)。在系统启动时,会在屏幕上显示许多与硬件有关的信息。可以用dmesg查看它们。
- /var/log/auth.log — 包含系统授权信息,包括用户登录和使用的权限机制等。
- /var/log/boot.log — 包含系统启动时的日志。
- /var/log/daemon.log — 包含各种系统后台守护进程日志信息。
- /var/log/dpkg.log – 包括安装或dpkg命令清除软件包的日志。
- /var/log/kern.log – 包含内核产生的日志,有助于在定制内核时解决问题。
- /var/log/lastlog — 记录所有用户的最近信息。这不是一个ASCII文件,因此需要用lastlog命令查看内容。
- /var/log/maillog /var/log/mail.log — 包含来着系统运行电子邮件服务器的日志信息。例如,sendmail日志信息就全部送到这个文件中。
- /var/log/user.log — 记录所有等级用户信息的日志。
- /var/log/Xorg.x.log — 来自X的日志信息。
- /var/log/alternatives.log – 更新替代信息都记录在这个文件中。
- /var/log/btmp – 记录所有失败登录信息。使用last命令可以查看btmp文件。例如,”last -f /var/log/btmp | more“。
- /var/log/cups — 涉及所有打印信息的日志。
- /var/log/anaconda.log — 在安装Linux时,所有安装信息都储存在这个文件中。
- /var/log/yum.log — 包含使用yum安装的软件包信息。
- /var/log/cron — 每当cron进程开始一个工作时,就会将相关信息记录在这个文件中。
- /var/log/secure — 包含验证和授权方面信息。例如,sshd会将所有信息记录(其中包括失败登录)在这里。
- /var/log/wtmp或/var/log/utmp — 包含登录信息。使用wtmp可以找出谁正在登陆进入系统,谁使用命令显示这个文件或信息等。
- /var/log/faillog – 包含用户登录失败信息。此外,错误登录命令也会记录在本文件中。
/srv
srv 可以看做 service 的缩写,是一些网络服务启动之后,这些服务所需要取用的数据目录,常见的服务例如 WWW, FTP 。
CentOS 7 在目录的编排上与过去的版本不同,上面已经大致描述过了,这里做个汇总,比较大的差异就是将许多原本应该在根目录里面的目录,将全部数据挪到了 /usr 里面去,然后进行链接设置,这些内容包括
- /bin -> /usr/bin
- /sbin -> /usr/sbin
- /lib -> /usr/lib
- /lib64 -> /usr/lib64
- /var/lock -> /run/lock
- /var/run -> /run
