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
  • 查看Linux用户组

创建用户时,若不特殊指定,则默认以用户名作为对应的用户组。

groups 查看当前登录用户的组内成员
groups gliethttp 查看gliethttp用户所在的组,以及组内成员
whoami 查看当前登录用户名

X 参考文献

[Linux]Filesystem Hierarchy Standard/文件系统层次结构标准(FHS for Linux)的更多相关文章

  1. Linux & Filesystem Hierarchy Standard

    Linux & Filesystem Hierarchy Standard The Filesystem Hierarchy Standard of Linux https://zhuanla ...

  2. Linux文件系统层次结构标准FHS

    文件系统层次结构标准(英语:Filesystem Hierarchy Standard,FHS)定义了Linux操作系统中的主要目录及目录内容.FHS由Linux基金会维护. 当前版本为3.0版,于2 ...

  3. 文件系统层次标准FHS的详细介绍

    Filesystem Hierarchy Standard (文件系统层次标准,FHS)标准依据文件系统使用的频繁与否与是否允讲使用者随意更动, 而将目录定义成四种交互作用的形态,具体如下: 可分享的 ...

  4. 文件系统层次结构标准 Linux 系统目录结构

    https://zh.wikipedia.org/wiki/文件系统层次结构标准 多数Linux发行版遵从FHS标准并且声明其自身政策以维护FHS的要求. [3] [4] [5] [6] 但截至200 ...

  5. The Filesystem Hierarchy Standard of Linux

    The Filesystem Hierarchy Standard of Linux linux directory https://zhuanlan.zhihu.com/p/23862856 htt ...

  6. Linux文件系统层次结构标准

    该标准的目的是定义Linux文件系统的标准路径,使得开发者和用户可以在合理的位置找到需要的东西. Linux的文件布局的大体想法是将文件和目录分为如下3组: 对运行Linux的某一特定系统唯一的文件和 ...

  7. Linux:文件系统层次结构标准(Filesystem Hierarchy Standard)

    Linux FHS_2.3标准文档:http://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.pdf

  8. Linux 文件系统简介(FHS:Filesystem Hierarchy Standard)

    一,linux的目录结构 /bin:所有用户都可以使用的可执行程序 /sbin:系统管理员使用的可执行程序 /boot:引导加载器必须用到的静态文件:kernel,initramfs,grub等. / ...

  9. Filesystem Hierarchy Standard (Unix, Linux etc)

    http://www.pathname.com/fhs/ /boot -- Static files of the boot loader Purpose: contains everything r ...

  10. 什么是FHS,Linux的文件系统目录标准是怎样的

    Filesystem Hierarchy Standard(文件系统目录标准)的缩写,多数Linux版本采用这种文件组织形式,类似于Windows操作系统中c盘的文件目录,FHS采用树形结构组织文件. ...

随机推荐

  1. pycharm debug 等实用功能

    1.debug方法方法一: 1.打断点,代码会运行到断点前一行 2.step over 逐行运行代码 3.鼠标选中带有函数语句的当前行,点击 step into 再点击step over代码会跳转到函 ...

  2. 初识 Linux Shell

    初识 Linux Shell 本书学习的第一步,就是要找到 Linux 终端的所在位置.目前较常见的图形化终端有 Konsole.Gnome terminal.xterm 等几种.一般安装后在各个发行 ...

  3. Linux_MySQL

    MySQL 安装 AB复制 安装 1.编译安装 2.yum安装 [https://www.mysql.com/] yum安装的方式 1.在官网下载mysql rpm包 # wget https://d ...

  4. doy 19 进程管理

    1.进程管理 1.什么是进程,什么是线程​ 1.什么是程序 一般情况下,代码,安装包等全部都是应用程序. 2.什么是进程 应用程序运行起来的能够提供某种服务的实例. 3.什么是线程 进程中处理具体事务 ...

  5. eclipse项目右键属性java Build Path等丢失

    https://www.cnblogs.com/IDECIDETODOIT/p/3906831.html https://zhidao.baidu.com/question/133415688.htm ...

  6. idea创建maven + tomcat项目

    移动文件夹: 找到tomcat文件目录 配置完成,添加测试html文件: 运行 修改默认路径:

  7. 转发 关于Windows安装解压版MySQL出现服务正在启动-服务无法启动的问题

    部分转自 :https://blog.csdn.net/u013901768/article/details/80707307 我是从服务器上复制了mysql的整个目录,到本地,然后怎么也不好用,看了 ...

  8. 关于Maven的使用

    Maven基础入门 一.maven是什么 Apache Maven,是一个项目管理及自动构建的工具,有Apache软件基金会所提供. Maven是用Java语言编写的,是一款可以跨平台的软件. Mav ...

  9. 快速乘_c/c++

    快速乘的使用主要是这种情形:要计算(a * b) % p时,发现a * b爆 long long 了,而a, b, p没有爆 long long   快速乘的原理:   比如当我们需要要计算3 * 2 ...

  10. C# DataTable操作,转载

    DataTable 排序   DataRow[] rows = dataTable1.Select("", "ord asc");   DataTable t ...