• [Linux]Filesystem Hierarchy Standard/文件系统层次结构标准(FHS for Linux)


    1 文件系统层次结构标准

    本篇文章为维基百科中关于FHS的译文,原文见

    由spawpaw@hotmail.com翻译,转载需注明出处
    原文备份:http://blog.csdn.net/qq_29753285/article/details/69790931
    本文更新地址:http://blog.csdn.net/qq_29753285/article/details/69791332
    (csdn解析markdown有点问题..有点影响阅读…)
    像这类解释性的文章还是建议大家看原文。

    Filesystem Hierarchy Standard (FHS)由linux基金会维护,
    目前(2017-4-9),FHS的最新版本为3.0,可从http://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.pdf下载

    1.1 FHS 简介

    • 开发者 Linux基金会
    • 初始版本 1994年2月14日
    • 最新版本 3.0 (2015年6月3日)
    • 网站 Linux基金会官网

    文件系统层次结构标准 (FHS) 定义了在类Unix系统中的目录结构和目录内容。它由Linux基金会维护,最新版为2015年六月三日发布的3.0版,仅用于Linux的各类发行版中。

    1.2 目录结构

    在FHS中,所有的(包括存储于不同物理/虚拟设备中的)文件和目录都存在于根目录 / 下。其中,部分目录仅当特定系统(如X Window)安装后才会存在。

    下表中大部分目录都以相似的功能存在于所有的UNIX系统中。但是,以下的描述仅针对FHS,且对非Linux系统并非权威

    • / 主层次结构的根&&整个文件系统的根目录
      • /bin 所有用户在单用户模式中必须具备的二进制命令文件,如 cat, ls, cp.(重要的二进制 (binary) 应用程序包含二进制文件,系统的所有用户使用的命令都在这个目录下)
      • /boot 启动 (boot loader) 配置文件,包含引导加载程序相关的文件,如 kernels, initrd.
      • /dev 必要的 设备(device) 文件,包含设备文件、终端设备,USB或连接到系统的任何设备,如 /dev/null.你只要通过访问这个目录下的某个文件就相当于访问某个设备. 设备分类字符设备块设备(物理设备、虚拟设备)
      • /etc 特定主机 全系统 的配置文件(配置文件、启动脚本等),包含所有程序所需的配置文件,也包含了用于启动/停止单个程序的启动和关闭shell脚本。一直以来,这个名字本身就有争议。在早期由Bell labs所撰写的UNIX实现文档中,/etc 被当作附加(etcetera)目录,因为历史上这个文件夹用来保存所有不属于其他地方的文件(但FHS限制/etc仅用于保存静态配置文件,不能保存二进制文件)。从早期的文档发布以来,这个文件夹的名字就被人们以不同的方式重新定义。最近的释义包括如”Editable Text Configuration” 或 “Extended Tool Chest”词源
        • /etc/opt  保存在/opt/中的插件包的配置文件
        • /etc/sgml  处理SGML的程序(如catalogs)的配置文件
        • /etc/X11  X Window System, version 11 的配置文件
        • /etc/xml  处理xml的程序(如catalogs)的配置文件
      • /home 本地用户主 (home) 目录,所有用户用home目录来存储他们的个人文件、个人设置等
      • /lib 系统库 (libraries) 文件(ldd?跟踪依赖库),包含支持位于/bin和/sbin下的二进制文件的库文件。即 /bin//sbin/ 中必须的依赖库
      • /lib Alternate format essential libraries. Such directories are optional, but if they exist, they have some requirements.
      • /media 挂载(可移动介质)热插拔介质 (media),诸如 CD-ROMs数码相机等挂载点,用于挂载可移动设备的临时目录。 (在FHS-2.3中出现).
      • /mnt 临时挂载的文件系统。临时安装目录,系统管理员可以挂载文件系统:mount -t type [-o options] device dir
      • /opt 可选的、提供第三方应用程序的安装目录。
      • /proc 将进程和内核信息以文件形式呈现的虚拟文件系统。在Linux中,与procfs mount(进程文件系统)对应。即:特殊的动态目录,用以维护系统信息和状态,包括当前运行中进程 (processes) 信息;包含系统进程的相关信息,是一个虚拟的文件系统,包含有关正在运行的进程的信息,系统资源以文本信息形式存在。
      • /root root用户的用户主目录
      • /run 运行时变量数据:从本次启动到现在的系统信息。如当前登陆的用户和正在运行的守护进程。挂载临时文件系统,文件和目录没有存储在磁盘上,而只存储在内存中。它们表示保存在内存(或基于磁盘的交换空间)中的数据,它看起来像是一个已挂载的文件系统,这个可以使其更易于访问和管理
      • /sbin 必备的系统可执行文件,如fsck, init, route.即:重要的系统二进制 (system binaries) 文件 也是包含的二进制可执行文件。在这个目录下的linux命令通常都是由系统管理员使用的,对系统进行维护。即 /sbin一般存放root用户的管理类程序;/bin一般用户都可以使用的命令
      • /srv 本系统提供的特定站点的数据,存放着一些软件服务启动后所需要的程序。如web服务器提供的数据和脚本,FTP服务器提供的数据,VCS的仓库
      • /sys 包含连接到本台计算机的设备信息.即 系统 (system) 文件,其实跟/proc非常的相似,也是一个虚拟的文件系统主要也是记录与内核相关的信息
      • /tmp 临时文件(和/var/tmp相同). 通常在重启后清空,并且受到严格的大小限制。 即 临时(temporary)文件包含系统和用户创建的临时文件。当系统重启时,这个目录下的文件将都被删除
      • /usr UNIX SOFTWARE RESOURCE包含绝大部分用户都能访问的应用程序和文件,包含二进制文件,库文件、文档和二级程序的源代码。即: 只读用户数据的次要层次,包含大部分(多)用户功能和应用。
        • /usr/bin    所有用户的非必要的二进制可执行文件(在单用户模式中不需要)
        • /usr/include  Standard include files.
        • /usr/lib     /usr/bin/ 和 /usr/sbin/ 中的二进制文件的依赖库
        • /usr/lib Alternate format libraries (optional).
        • /usr/local    仅针对当前主机的 本地数据的第三个层次。一般包含其他的子目录,如 bin/, lib/, share/
        • /usr/sbin    非必须的系统二进制文件,如多种网络服务的守护进程
        • /usr/share   结构独立(共享)的数据
        • /usr/src    源代码,如 内核的源代码和它的头文件
        • /usr/X11R6   X Window System, Version 11, Release 6 (up to FHS-2.3, optional).
      • /var Variable files:各种在系统运行中,内容会不停改变的文件。经常变化的(variable)文件,在这个目录下可以找到内容可能增长的文件。如:日志文件、数据库、spool files,和临时的电子邮件文件。
        • /var/cache 应用缓存数据。这类文件由于耗时的I/O或计算而被生成在本地。应用必须能够重新生成或转储这些文件,以保证这些数据被删除时不会造成数据丢失。(意思就是这些东西删了不会造成不良后果)
        • /var/lib   状态信息。程序运行时会改变的持久化数据,如 数据库,packaging system metadata, etc.
        • /var/lock  Lock files. 追踪当前正在使用的资源的文件.
        • /var/log  Log files. 各种日志.
        • /var/mail  Mailbox files. 在某些发行版中,这些文件被放在已经不推荐使用的/var/spool/mail 目录中.
        • /var/opt  来自保存在/opt 中的插件包的可变数据。
        • /var/run  Run-time variable data. 这个目录包含描述系统的自启动以来的系统信息数据。在 FHS 3.0中, /var/run 被 /run 替代。系统不应该在使用/var/run 或者提供/var/run 到 /run 的符号连接,防止出现兼容性倒退
        • /var/spool Spool for tasks waiting to be processed, e.g., print queues and outgoing mail queue.
          • /var/spool/mail 不建议使用的用户邮箱位置,见/var/mail
        • /var/tmp 重启时会被保存的临时数据

    1.3 FHS 约定

    大多数Linux发行版遵循文件系统层次结构标准(FHS),并且为保持FHS约定发布了相关政策。GoboLinux 和 NixOS 提供了有意不遵循FHS约定的实现
    有些基本遵循这个标准的发行版在部分方面有些违背,如

    • 现代Linux发行版将/sys 作为可以被连接到此系统的设备修改和保存的虚拟文件系统(sysfs,相当于/proc),但是许多UNIX和类UNIX系统使用/sys 作为指向 kernel source tree 的符号连接
    • 许多现代UNIX系统(像FreeBSD ,通过它的端口系统)安装第三方包至/usr/local 然而却将本应是操作系统的代码放在/usr 中
    • 一些Linux发行版不再区分/lib 与/usr/lib,并且将lib 作为指向 /usr/lib 的软连接
    • 一些Linux发行版不再区分 /bin 与 /usr/bin 和/sbin 与/usr/sbin 。他们将 /bin 作为指向 /usr/bin 的软连接, 将/sbin 作为指向/usr/sbin 的软连接

    现代Linux发行版将/run 作为(遵循FHS3.0的)保存不稳定的运行时数据的临时文件系统(tmpfs)。根据FHS2.3,这类数据被保存在/var/run ,但是由于在启动时这个目录并不总是可用,会导致一些问题。所以,这些程序必须借助欺骗的方式,如使用类似 /dev/.udev, /dev/.mdadm, /dev/.systemd 或 /dev/.mount 等并不是用来保存这些数据的设备目录。除其他好处外,这样也会使根目录以只读方式挂载的系统更容易使用。例如,以下是Debian在2013年的Wheezy版本中作出的改变:

    /dev/.* → /run/*
    /dev/shm → /run/shm
    /dev/shm/* → /run/*
    /etc/* (writeable files) → /run/*
    /lib/init/rw → /run
    /var/lock → /run/lock
    /var/run → /run
    /tmp → /run/tmp
    

    1.4 历史

    当FHS被以FSSTND (Filesystem Standard的缩写)被创建时,其他UNIX和类UNIX系统已经有了他们自己的标准。
    比较典型的例子有 自从 Version 7 Unix (in 1979)发布以来就存在的the hier(7) description of file system layout; the SunOS filesystem(7) 和它的后继 the Solaris filesystem(5)

    • 历史版本
    legend Version Release Date Notes
    旧版本 1 1994/2/14 FSSTND
    旧版本 1.1 1994/10/9 FSSTND
    旧版本 1.2 1995/3/28 FSSTND
    旧版本 2 1997/10/26 FHS 2.0 直接继承自FSSTND 1.2 。 FSSTND更名为FHS
    旧版本 2.1 2000/4/12 FHS
    旧版本 2.2 2001/5/23 FHS
    仍支持 2.3 2004/1/29 FHS
    最新版 3 2015/5/18 FHS

    2 文件系统基本信息解读

    文件属性

    文件类型

    Linux中常见的文件类型有7种:

    文件权限

    chmod [-R] xyz 文件或目录

    linux中每个文件或目录都有一组共9个基础权限位,每三位字符被分为一组,他们分别是属主权限位、用户组权限位、其他用户权限位,通过权限位来控制文件属主、用户组以及其他用户的权限。

    权限位 说明
    r read可读权限 对应数字是:4
    w write 可写权限 对应数字是:2
    x Execute 可执行权限 对应数字是:1
    - 没有任何权限 对应数字是:0

    3 延申

    Linux的命令分类及帮助

    • 内部命令与外部命令:
      在linux系统中有存储位置的命令为外部命令,没有存储位置的为内部命令,可理解为内部命令嵌入在linux的shell中,所以看不到。type来判断到底为内部命令还是外部命令
    type <command>
    
    • 获取帮助的途径
    1. help命令
      内部命令的帮助文档 。使用help的格式为    help  命令字就可以
    [root@model Documents]# help cd
    
    1. "--help"选项
      大多数外部命令都可以使用--help来获取帮助,如果这个命令没有--help选项,则会显示简单的命令 格式 命令字 --help
    date --help     //日期帮助
    
    1. Man命令
    man  passwd
    
    1. Info命令
    info passwd
    

    LINUX 常用命令分类

    • 网络
    ifconfig / ping / netstat / lsof
    
    • 资源监控(内存、磁盘、进程)
    top / free / iostat / vmstat / ps
    
    • 文件系统 / 文本处理 / 用户管理
    ls / mv / cp / rm / 
    
    chmod / chgrp / chown
      chmod [-R] xyz 文件或目录
        # chmod:更改文件9个属性 如: chmod  635  /opt/bashrc
      chown  [-R]   属主名:属组名 文件名
        # chown:更改文件属主,也可以同时更改文件属组 如: chown  sdc:mysql  /opt/install.log
      chgrp   [-R]   属组名文件名
        # chgrp:更改文件属组
      -R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改。
    
    touch / vi / cat / grep / find
    passwd / useradd
    
    • 查询
    who / history / which
    
    • 软件(源)管理
    rpm / yum / 
    

    Linux用户管理

    • Linux用户的分类:
    root用户
    虚拟用户(比如 bin、daemon、adm、ftp、mail等,这类用户都是系统自身拥有的)
    普通用户
    

    注意:在Linux中,操作系统根据UID来判断用户, 而不是用户名!
    在Linux,管理员在默认情况下为root账户,UID=0。
    普通用户UID默认范围为1-65535。
    在centos 6中,系统用户的UID范围为1-499,普通用户为500+。
    在centos 7中,系统用户范围为1-999,普通用户为1000+。

    • Linux用户的配置文件主要包括:
    用户信息文件:/etc/passwd
    密码文件:/etc/shadow
    用户组文件:/etc/group
    用户组密码文件:/etc/gshadow
    

    X 参考文献

    赞赏-支付宝二维码
    本文作者千千寰宇
    本文链接 https://www.cnblogs.com/johnnyzen
    关于博文:评论和私信会在第一时间回复,或直接私信我。
    版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
    声援博主:若本文对您有帮助,可点击右下角推荐一下。您的鼓励、【赞赏】(左侧赞赏支付码)是博主技术写作的重要动力!
  • 相关阅读:
    cmd 命令添加防火墙端口
    linux 远程 telnet
    topshelf 服务启动运行
    postfix 邮箱服务器- SPF 防发件人欺骗
    linux 只查看目录下文件夹
    Android中的颜色设置
    thread和runnable
    Handler总结
    Failed to install Intel HAXM.
    Android Studio常见问题总结
  • 原文地址:https://www.cnblogs.com/johnnyzen/p/15065474.html
Copyright © 2020-2023  润新知