linux学习笔记_3_文件目录的意义


最近需要使用linux, 读了《鸟哥的 linux私房菜》之后,把常见文件的意义总结如下

FHS(Filesystem Hierarchy Standard)

文件配置的依据是 FHS标准,该标准也是根据过去的经验不断修正,主要用于方便管理文件,防止不同个人,发行版,公司之间文件管理过于混乱。

文件目录的基本分类

可分享(shareable) 不可分享(unshareable)
不变(static) /usr(软件存放处) /etc(配置文件)
/opt(第三方辅助软件) /boot(启动与内核文件)
可变(variable) /var/mail(用户邮箱) /var/run(程序相关)
/var/spool/news(新闻组) /var/lock(程序相关)

可分享

可以分享给其他系统挂载

不可分享

分自身系统高度相关,不适合分享

不变

放置不会经常变动的数据,例如函数库,文件说明,配置文件

可变

经常修改的数据,例如日志文件,新闻组

/各个目录常见的用处

  1. /bin 存放用于在单人维护模式下还可使使用的命令cat, chmod, chown,mv等命令。
  2. /boot 主要存放系统启动会使用的文件,包括Linux内核文件,启动选项和启动配置文件等。 Linux 内核常用文件名: vmlinuz,如果使用grub2这个启动程序,还会存在/boot/gurb2这个目录
  3. /etc 系统主要的配置文件几乎都在这个目录中。比较重要的文件:
    1. /etc/modprobe.d modprobe配置文件(modprobe命令可以在内核中添加或载入指定的模块)。
    2. /etc/fstab 主要是文件系统的静态信息。
    3. /etc/issue 包含了登录前要打印的信息或者系统标识,(Manjaro系统中该文件的内容为:Manjaro Linux ( ) (l))可以通过修改该文件,显示不同的信息, man issue可以显示该文件的配置方法。
    4. /etc/opt 主要包含第三方辅助软件的配置信息
  4. /lib 主要存放启动时会用到的函数库,以及/bin, /sbin命令会用到的库
    1. /lib/modules 可抽换式的内核相关模块,应该就是驱动程序。
  5. /media 主要放置的是可删除的设备。(manjaro 没有发现这个目录)
  6. /mnt 一般暂时挂载某些额外的设备。(manjaro 系统中,优盘似乎也不在该目录下)
  7. /opt 主要放置第三方辅助软件(因该是第三方提供的可在linux在安装的软件,但是多是非开源软件,pacman 安装的也可能式第三方软件,比如bazel, cuda, vscode)
  8. /run 系统启动后的相关信息都会存放在这个目录下
  9. /sbin 包含了系统启动,修复,还原所需要的命令。(manjaro中,该目录链接到了/usr/bin
  10. /srv (service) 一些网络服务启动后,这些服务所需要使用的目录。
  11. /tmp 一般用户和正在执行的程序暂时存放数据的文件夹,重启以后一般会删除该目录下的文件(manjaro正是这样)
  12. /home 系统默认的一般用户的家目录
  13. /lib<qual>, 用于存放和lib不同格式的二进制函数库。(manjaro 有支持64位的函数库lib64)
  14. /proc 虚拟文件系统,主要存放内核,进程信息,外接设备的装填等数据,数据均在内存中,本身不占内存空间。
  15. /sys 与proc相似,主要记录系统内核和系统硬件信息的相关内容。
  16. /lost+found ext2,ext3,ext4文件系统中存在的目录,存放文件系统发生错误时,将一些遗失的片段放在该目录下。xfs文件系统不会存在这个目录。

/usr各个目录常见用处

  1. /usr/bin 一般用户可以使用的命令都在这里,FHS不建议该目录下存放文件(manjaro 中/bin链接到此目录;该目录有极少量文件夹,多是文件)
  2. /usr/lib 基本与lib功能相同。(manjaro 中/lib文件链接到此目录)
  3. /usr/local 管理员安装自己下载的软件(发行版中没有提供的软件)。(manjaroz中arch wiki 建议控制键盘灯的脚本文件防止在该目录下。)
  4. /usr/sbin 非系统正常运行所需要的命令,例如某些网络服务器软件的服务命令,功能与/sbin 差不多。
  5. /usr/share 存放一些只读数据文件,几乎都是文本文件。比较常见的有一下几个目录:
    1. /usr/share/man 在线帮助文档
    2. /usr/share/doc 软件的说明文档
    3. /usr/share/zoneinfo 与时区有关的文件
  6. /usr/src 一般源代码放在这个文件夹下。内核源代码一般放在/usr/src/linux目录下(manjaro中只存在/usr/src/gtest
  7. /usr/includec/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++头文件,具体意义自己没有深究)
  8. /usr/lib<qual>/lib<qual>功能相同,/lib<qual>一般连接到此目录。(manjaro 中/lib, /lib64均链接到了/usr/lib
  9. /usr/datamanjaro 中存在的文件,具体功能自己没有深究。

/var下各个目录常见用处

  1. /var/cache 应用程序本身运行过程中产生的一些缓存
  2. /var/lib 程序本身执行过程中,需要使用到的数据文件一般放置到该目录下。一般各个应用程序有自己单独的文件夹,manjaro该目录下存在/var/lib/mysql,/var/lib/bluetooth文件
  3. /var/lock 文件指示了共享设备或者其他系统资源正在被使用,并且包含了正在使用该资源的进程PID。
  4. /var/log非常重要的文件夹,存放日志文件。比较重要的文件/var/log/messages包括系统整体信息,也包括系统启动期间的日志(manjaro下没有该文件)/var/log/wtmp登录日志文件
  5. /var/run 会将启动后的程序或者服务的PID放置到该目录下。与/run相同,该目录会链接到/run
  6. /var/spool 会放置一些队列数据,即等待其他程序使用的数据。
  7. /var/mail 个人信箱文件,与/spool/mail互为链接文件。(manjaro 中,该文件本链接到/var/spool/mail下)

参考

《鸟哥的linux私房菜》

原文地址:https://www.cnblogs.com/lif323/p/10732905.html