最近需要使用linux, 读了《鸟哥的 linux私房菜》之后,把常见文件的意义总结如下
FHS(Filesystem Hierarchy Standard)
文件配置的依据是 FHS标准,该标准也是根据过去的经验不断修正,主要用于方便管理文件,防止不同个人,发行版,公司之间文件管理过于混乱。
文件目录的基本分类
可分享(shareable) | 不可分享(unshareable) | |
---|---|---|
不变(static) | /usr(软件存放处) | /etc(配置文件) |
/opt(第三方辅助软件) | /boot(启动与内核文件) | |
可变(variable) | /var/mail(用户邮箱) | /var/run(程序相关) |
/var/spool/news(新闻组) | /var/lock(程序相关) |
可分享
可以分享给其他系统挂载
不可分享
分自身系统高度相关,不适合分享
不变
放置不会经常变动的数据,例如函数库,文件说明,配置文件
可变
经常修改的数据,例如日志文件,新闻组
/
各个目录常见的用处
/bin
存放用于在单人维护模式下还可使使用的命令cat, chmod, chown,mv等命令。/boot
主要存放系统启动会使用的文件,包括Linux内核文件,启动选项和启动配置文件等。 Linux 内核常用文件名: vmlinuz,如果使用grub2这个启动程序,还会存在/boot/gurb2
这个目录/etc
系统主要的配置文件几乎都在这个目录中。比较重要的文件:/etc/modprobe.d
modprobe
配置文件(modprobe
命令可以在内核中添加或载入指定的模块)。/etc/fstab
主要是文件系统的静态信息。/etc/issue
包含了登录前要打印的信息或者系统标识,(Manjaro系统中该文件的内容为:Manjaro Linux ( ) (l)
)可以通过修改该文件,显示不同的信息,man issue
可以显示该文件的配置方法。/etc/opt
主要包含第三方辅助软件的配置信息
/lib
主要存放启动时会用到的函数库,以及/bin
,/sbin
命令会用到的库/lib/modules
可抽换式的内核相关模块,应该就是驱动程序。
/media
主要放置的是可删除的设备。(manjaro 没有发现这个目录)/mnt
一般暂时挂载某些额外的设备。(manjaro 系统中,优盘似乎也不在该目录下)/opt
主要放置第三方辅助软件(因该是第三方提供的可在linux在安装的软件,但是多是非开源软件,pacman 安装的也可能式第三方软件,比如bazel, cuda, vscode)/run
系统启动后的相关信息都会存放在这个目录下/sbin
包含了系统启动,修复,还原所需要的命令。(manjaro中,该目录链接到了/usr/bin
)/srv (service)
一些网络服务启动后,这些服务所需要使用的目录。/tmp
一般用户和正在执行的程序暂时存放数据的文件夹,重启以后一般会删除该目录下的文件(manjaro正是这样)/home
系统默认的一般用户的家目录/lib<qual>
, 用于存放和lib不同格式的二进制函数库。(manjaro 有支持64位的函数库lib64)/proc
虚拟文件系统,主要存放内核,进程信息,外接设备的装填等数据,数据均在内存中,本身不占内存空间。/sys
与proc相似,主要记录系统内核和系统硬件信息的相关内容。/lost+found
ext2,ext3,ext4文件系统中存在的目录,存放文件系统发生错误时,将一些遗失的片段放在该目录下。xfs文件系统不会存在这个目录。
/usr
各个目录常见用处
/usr/bin
一般用户可以使用的命令都在这里,FHS不建议该目录下存放文件(manjaro 中/bin
链接到此目录;该目录有极少量文件夹,多是文件)/usr/lib
基本与lib功能相同。(manjaro 中/lib
文件链接到此目录)/usr/local
管理员安装自己下载的软件(发行版中没有提供的软件)。(manjaroz中arch wiki 建议控制键盘灯的脚本文件防止在该目录下。)/usr/sbin
非系统正常运行所需要的命令,例如某些网络服务器软件的服务命令,功能与/sbin 差不多。/usr/share
存放一些只读数据文件,几乎都是文本文件。比较常见的有一下几个目录:/usr/share/man
在线帮助文档/usr/share/doc
软件的说明文档/usr/share/zoneinfo
与时区有关的文件
/usr/src
一般源代码放在这个文件夹下。内核源代码一般放在/usr/src/linux
目录下(manjaro中只存在/usr/src/gtest
)/usr/include
c/c++等程序语言的头文件(header),包含文件(include)放置处(在manjaro中/usr/include
可以发现stdio.h
等c头文件, 在/usr/include/c++/8.2.1/
发现iostream
等c++头文件。 另外:/usr/lib/gcc/x86_64-pc-linux-gnu/7.4.1/include/c++
文件夹下也有c++头文件,具体意义自己没有深究)/usr/lib<qual>
与/lib<qual>
功能相同,/lib<qual>
一般连接到此目录。(manjaro 中/lib
,/lib64
均链接到了/usr/lib
)/usr/data
manjaro 中存在的文件,具体功能自己没有深究。
/var
下各个目录常见用处
/var/cache
应用程序本身运行过程中产生的一些缓存/var/lib
程序本身执行过程中,需要使用到的数据文件一般放置到该目录下。一般各个应用程序有自己单独的文件夹,manjaro该目录下存在/var/lib/mysql
,/var/lib/bluetooth
文件/var/lock
文件指示了共享设备或者其他系统资源正在被使用,并且包含了正在使用该资源的进程PID。/var/log
非常重要的文件夹,存放日志文件。比较重要的文件/var/log/messages
包括系统整体信息,也包括系统启动期间的日志(manjaro下没有该文件)/var/log/wtmp
登录日志文件/var/run
会将启动后的程序或者服务的PID放置到该目录下。与/run
相同,该目录会链接到/run
/var/spool
会放置一些队列数据,即等待其他程序使用的数据。/var/mail
个人信箱文件,与/spool/mail
互为链接文件。(manjaro 中,该文件本链接到/var/spool/mail
下)
参考
《鸟哥的linux私房菜》