小言_互联网的博客

Linux基础学习之目录配置

285人阅读  评论(0)

Linux目录配置的依据——FHS

FHS——Filesystem Hierarchy Standard,主要目的是让用户了解到已安装软件通常放置于哪个目录下,也就是说,FHS的重点在于规范每个特定的目录下应该要放置哪种数据。

. 可分享(shareable) 不可分享(unshareable)
不变(static) /usr(软件存放处) /etc(配置文件)
. /opt(第三方辅助软件) /boot(启动与内核文件)
可变动(variable) /var/mail(用户邮箱) /var/run(程序相关)
. /var/spool/news(新闻组) /var/lock(程序相关)
  • 可分享:可以分享给其它系统挂载使用的目录,所以包括执行文件与用户的邮件等数据,是能够分享给网络上其他主机挂载的目录。
  • 不可分享:自己机器上面运行的设备文件或是与程序有关的socket文件等,由于仅与自身机器有关,所以当然就不适合分享给其他主机;
  • 不变:有些数据是不会经常变动的,跟随着发行版本而不变动。例如函数库、文件说明、系统管理员所管理的主机服务配置文件等;
  • 可变动:经常修改的数据,例如日志文件、一般用户可自行接收的新闻组等。

事实上,FHS针对目录树架构仅定义出三层目录下面应该放置什么数据而已,分别是下面这三个目录的定义:

  • /(root,根目录):启动系统有关
  • /use(unix software resource):与软件安装/执行有关;
  • /var (variable):与系统运行过程有关;

根目录的意义与内容

FHS标准建议:
根目录所在分区应该越小越好,且应用程序所安装的软件最好不要与根目录放在一个分区内,保持根目录越小越好。如此不仅性能较佳,根目录所在的文件系统也较不容易发生问题。

  • FHS要求根目录中必须存在的目录
    • /bin
      放置的是单人维护模式下还能被使用的命令。如:cat、chmod、chown、date等常用命令。
    • /boot
      放置启动会使用到的文件。包括Linux内核文件以及启动选项与启动所需配置文件。
    • /dev
      存储设备与接口文件。
    • /etc
      系统的配置文件几乎都放置在这个目录内。建议不要放置可执行文件在这个目录中。
    • /lib
      放置启动时会用到的库函数,以及在/bin或/sbin下面的命令会调用的函数库。
    • /media
      放置可删除的设备,包括软盘、光盘、DVD等都暂时挂载于此。
    • /mnt
      暂时挂载某些额外的设备。
    • /opt
      给第三方辅助软件放置的目录。
    • /run
      放置系统启动后所产生的各项信息。
    • sbin
      (system binary)系统执行文件,启动过程中所需要的,包括了启动、修复、还原系统所需要的命令。常见的命令包括:fdisk、fsck、ifconfig、mkfs等。
    • /srv
      service的缩写,一些网络服务启动之后,这些服务所需要使用的数据目录,常见的服务例如WWW、FTP等。
    • /tmp
      一般用户或是正在执行的程序暂时放置文件的地方。
    • /usr
    • /var
      主要放置变动性的数据。
  • FHS建议可以存在的目录
    • /home
      系统默认的用户家目录(home directory)。
      • ~:代表当前用户的家目录
      • ~tysong:代表tysong的家目录
    • /lib< qual>
      用来存放与/lib不同格式的二进制函数库,例如支持64位的/lib64函数库等。
    • root
      系统管理员(root)的家目录。之所以放在这里,是因为如果进入单人维护模式而仅挂载根目录时,该目录就能拥有root的家目录。
  • Linux中非常重要的目录
    • /lost+found
      这个目录时使用标准的ext2、ext3、ext4文件系统格式才会产生的一个目录,目的在于当文件系统发生错误时,将一些遗失的片段放置到这个目录下,不过如果使用的是xfs文件系统的话,就不会存在这个目录。
    • /proc
      这个目录本身是一个虚拟文件系统(virtual filesystem),它放置的数据都是在内存之中,例如系统内核,进程信息(process)、外接设备的状态及网络状态等。
    • /sys
      这个目录跟proc类似

/usr的意义和内容

usr不是user的缩写,而是UNIX Software Resource的缩写,也就是UNIX操作系统软件资源所放置的目录,而不是用户数据。

  • FHS要求 /usr 中必须存在的目录

    • /usr/bin/
      所有一般用户能够使用的命令都放在这里。/usr/bin是一摸一样的,此目录下不应该有子目录。
    • /usr/lib/
      基本上与/lib的功能相同,所以/lib就是链接到这里的。
    • /usr/local/
      系统管理员在本机安装自己下载的软件(非发行版默认提供者),建议安装到此目录,这样会比较便于管理。
    • /usr/sbin/
      基本上与/sbin的功能相同,所以/sbin就是链接到这里的。
    • /usr/share/
      主要放置只读的数据文件,当然也包括共享文件,在这个目录下仿制的数据几乎是部分硬件架构均可读取的数据,因为几乎都是文本文件。在此目录下常见的还有这些子目录:
      • /usr/share/man/
        在线帮助文件
      • /usr/share/doc/
        软件的说明文档
      • /usr/share/zoneinfo/
        与时区有关的时区文件
  • FHS建议 /usr 中可以存在的目录

    • /usr/game/
      与游戏比较相关的数据放置处
    • /usr/include/
      C/C++等程序文件的头文件(header)与包含文件(include)放置处
    • /usr/libexec/
      某些不被一般用户常用的执行文件或脚本等。
    • /usr/lib< qual>/
      与lib< qual>功能相同,lib< qual>就是链接到这里的。
    • /usr/src/
      一般源代码建议放置到这里,src有source的意思。

/var的意义和内容

/var主要针对经常性变动的文件,包括缓存(cache)、日志文件(log file)以及某些软件运行所产生的文件,包括程序文件(lock file、run file),或例如MySQL数据库的文件等。

  • FHS要求/ var 目录中必须存在的目录
    • /var/cache/
      应用程序本身运行过程中会产生的一些缓存
    • /var/lib/
      程序本身执行的过程中,需要使用到的数据文件放置的目录。在此目录下各自的软件应该要有各自的目录。
    • /var/lock/
      某些设备或是文件资源一次只能被一个应用程序使用,如果同时有两个程序使用该设备时,就可能产生一些错误的状况,因此就得要将该设备上锁(lock),以确保该设备只会给单一软件所使用。
      -/var/log/
      很重要。这是日志文件放置的目录,里面比较重要的文件有/var/log/messages、/var/log/wtmp(记录登录信息等)
      -/var/mail/
      放置个人电子邮箱的目录,不过这个目录也被放置到/var/spool/mail/目录中,通常这两个目录是互为链接文件。
    • /var/run/
      与/run相同。这个目录链接到/run目录
    • /var/spool/
      放置一些队列数据,所谓的队列就是排队等待其他程序使用的数据,这些数据被使用后通常都会被删除。

目录树(directory)

目录树的主要特性

  • 目录树的起始点位根目录(/,root);
  • 每一个目录不止能使用本地分区的文件系统,也可以使用网络上的文件系统。举例来说,可以用Network File System(NFS)服务器挂载某特定目录等;
  • 每一个文件在此目录树中的文件名(包含完整路径)都是独一无二的。

绝对路径与相对路径

  • 绝对路径:由根目录(/)开始写起的文件名或目录名称,例如/home/tysong/.bashrc;
  • 相对路径:相对于当前路径的文件名写法,例如./home/tysong或…/…/home/tysong/等,反正开头不是/就属于相对路径的写法。

特殊的目录:

  • .:代表当前的目录,也可以用./来表示;
  • :代表上一层目录,也可以用…/来表示/

转载:https://blog.csdn.net/qq_20517403/article/details/101298417
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场