Linux是开源的操作系统,如果每个人依据自己的想法来配置文件目录,可能会造成很多管理上的困扰,所以Linux的目录配置需要一定的标准
Linux目录配置的依据——FHS
FHS(Filesystem Hierarchy Standard)标准规定了每个特定目录下应该放置什么样的数据
FHS对目录树的架构,仅定义了三层目录下面应该放置什么样的数据
- /(root,根目录):与系统启动有关
- /usr(unix software resource):与软件安装/执行有关
- /var(variable):与系统运行有关
根目录( / )
整个系统最重要的一个目录,所有的目录都是由根目录衍生出来的
让我们来看看根目录下有哪些目录
可以看到,这里面有四个以 l 开头的文件,即链接文件,相当于快捷方式,箭头指向的文件才是真实文件的路径。
剩余的都是以 d 开头的文件,即为目录文件。接下来将一个个解释一下这些目录的意义。
/bin:存放着可执行的用户命令的目录,所有用户都可使用,主要有:cat、chmod、chown、date、mv、mkdir、cp、bash等常用命令。注意到 /bin 的文件属性为链接文件,原文件的位置是 /usr/bin,是因为新的CentOS 7 已经将全部的用户命令放置于此。也就是说,bin 与 usr/bin 是一摸一样的
/boot:开机启动文件与Linux内核文件目录。
/dev:设备与接口文件目录。
/etc:存放系统配置文件的目录,如账号密码文件、各种服务的启动文件。只有 root 有权利修改。
另外,FHS建议不要放置可执行文件(binary)在这个目录。
/lib:(library)函数库文件目录,存放开机启动时会用到的函数库,以及在 /bin 或 /sbin 下面的用户命令会调用的函数库。同样该文件是链接文件,原文件为 /usr/lib
/lib64:存放与 /lib 不同的二进制函数库,该文件为支持64位的函数库。
/media:(媒体),该文件下放置的是可删除设备,如光盘、DVD等设备暂时挂载于此。该文件下为自动挂载,比如U盘插入电脑,会自动在 /media 下生成一个目录,该目录就是U盘所在的目录。
/mnt:是被系统管理员使用,手动挂载一些临时媒体设备的目录。
/opt:第三方辅助软件放置目录。
/run:用来存放系统启动后所产生的各项信息。
/sbin:启动过程中需要的文件,包括启动、修复、还原系统所需的命令。同意,该文件为链接文件,原文件位置为 /usr/bin。
/srv:(service)一些网络服务启动后,这些服务所需要使用的数据目录。
/tmp:一般用户正在执行的程序暂时放置文件的地方,需要定时清理。FHS建议启动时将 /tmp 下的数据都删除。
/usr:第二层FHS设置,后续介绍。
/var:第二层FHS设置,后续介绍。
/home:系统默认的用户家目录(home directory),新增一个账号,默认用户的家目录都会规范到这里。
/root:系统管理员(root)的家目录。
/proc:该目录本身是一个虚拟文件系统,它放置的数据都是在内存当中,如系统内核、进程信息、外接设备状态及网络状态,所以本身不占用任何硬盘空间。
/sys:和 /proc很相似,也是一个虚拟文件系统,主要记录内核与系统硬件信息相关内容,同样不占用硬盘空间。
/usr
/usr可不是 user 的缩写,而是 UNIX Software Resource 的缩写,也就是 Unix操作系统软件资源所放置的目录。接下来看看 /usr 的子目录都有哪些
/usr/bin:一般用户能够使用的命令都放置于此。另外,FHS要求该目录下不应有子目录。
/usr/lib:与 /lib 功能相同,所以 /lib 就是链接到此目录中
/usr/local:安装自己下载的软件,建议安装到此目录。
usr/sbin:与 /sbin 功能相同,/sbin 就是链接到此目录中。
/usr/share:主要放置只读的数据文件,d rwx r-x r-x
该目录下常见的子目录:
/usr/share/man:在线帮助文件
/usr/share/doc:软件的说明文档
/usr/share/zoneinfo:与时区有关的时区文件
/usr/games:与游戏相关的数据放置处。
/usr/include:c/c++等程序语言头文件(header)与包含文件(include)放置处。
/usr/libexec:某些不被一般用户执行的文件或脚本都会放置在此目录。如大部分X窗口下面的操作命令,很多都是在此目录下。
/usr/lib64:与 /lib64 功能相同, /lib64就是链接到此目录中。
/usr/src:一般源代码建议放置到这里,内核源码则在 usr/src/Linux 目录下。
/var
/usr是安装时会占用较大硬盘容量的目录,而/var则是在系统运行后才会渐渐占用硬盘容量。
/var目录主要针对经常变动的文件,如缓存、日志文件、软件运行所产生的文件等。
/var/cache:应用程序运行中产生的缓存放置的目录。
/var/lib:应用程序执行过程中,需要使用到的数据文件放置的目录。
/var/lock:某些设备文件一次只能被一个应用程序使用,因此将该设备上锁,确保只会给单一软件使用。第二个程序想使用,只能等设备解除锁定(第一个程序用完)。
/var/log:日志文件放置的目录!!!!!!
/var/mail:放置个人电子邮箱的目录。
/var/run:某些程序或服务启动后,会将它们的 PID 放置在这个目录下。
/var/spool:该目录通常放置一些队列数据(排队等待其他程序使用的数据)。
参考《鸟叔的Linux私房菜》(基础学习篇)