2.1 什么是文件系统

  文件系统是操作系统在磁盘或分区上组织文件的方法和数据结构。负责对磁盘空间进行组织和分配,存储文件数据,并对其提供保护和检索服务。学习Linux,首先需要了解整个 Linux 文件系统的目录结构以及各个目录的功能。

  为了避免不同的发行版本使用不同的目录结构,Linux 基金会发布了 FHS 标准。多数 Linux 发行版系统都遵循这一标准。FHS(Filesystem Hierarchy Standard),文件系统层次化标准,该标准规定了 Linux 系统中所有一级目录以及部分二级目录(/usr 和 /var)的用途。

2.2 与windows文件系统的不同

  1. 与 Windows 系统不同的是Linux 系统没有 C 盘、D 盘、E 盘那么多的盘符,只有一个根目录(/),所有的文件(资源)都存储在以根目录(/)为树根的树形目录结构中。
  2. 文件的扩展名对 Linux 操作系统没有特殊的含义,换句话说,Linux 系统并不以文件的扩展名开分区文件类型。例如,dog.exe 只是一个文件,其扩展名 .exe 并不代表此文件就一定是可执行文件。
  3. 目录名或文件名是区分大小写的。

2.3 Linux 根目录(/)

  在Linux系统中,有一个重要思想:一切都是文件。即Linux系统将几乎所有的设备、配置、软件全部抽象为文件,而这些文件都保存在/目录下。/ 目录以下为一级目录这些目录都是系统装机时系统自动创建的。

2.4 Linux一级目录及其作用

  • /bin/  #存放系统命令,普通用户和 root 都可以执行。
  • /boot/ #系统启动目录,保存与系统启动相关的文件,如内核文件和启动引导程序(grub)文件等
  • /dev/ #设备文件保存位置
  • /etc/ #配置文件保存位置。系统内所有采用默认安装方式(rpm 安装)的服务配置文件全部保存在此目录中,如用户信息、服务的启动脚本、常用服务的配置文件等
  • /home/ #普通用户的主目录(也称为家目录)。所有普通用户的主目录是在/home/ 下建立一个和用户名相同的目录。如用户 mzg的主目录就是 /home/mzg
  • /lib/ #系统库文件保存位置
  • /media/ #挂载目录。系统建议用来挂载媒体设备,如软盘和光盘
  • /mnt/  #挂载目录。早期 Linux 中只有这一个挂载目录,并没有细分。系统建议这个目录用来挂载额外的设备,如 U 盘、移动硬盘和其他操作系统的分区
  • /misc/ #挂载目录。系统建议用来挂载 NFS 服务的共享目录。虽然系统准备了三个默认挂载目录 /media/、/mnt/、/misc/,但是到底在哪个目录中挂载什么设备可以由管理员自己决定。例如,早期 Linux 默认挂载目录只有 /mnt/,所以更多的程序员在 /mnt/ 下建立不同目录挂载不同设备,如 /mnt/cdrom/ 挂载光盘、/mnt/usb/ 挂载 U 盘等。
  • /opt/ #第三方安装的软件保存位置。这个目录是放置和安装其他软件的位置,手工安装的源码包软件都可以安装到这个目录中。更多的程序员习惯也可以把软件放到 /usr/local/ 目录中。
  • /root/ #root 的主目录。普通用户主目录在 /home/ 下,root 主目录直接在“/”下
  • /sbin/ #保存与系统环境设置相关的命令,只有 root 可以使用这些命令进行系统环境设置
  • /srv/ #服务数据目录。一些系统服务启动之后,可以在这个目录中保存所需要的数据
  • /tmp/ #临时目录。系统存放临时文件的目录,在该目录下,所有用户都可以访问和写入。建议此目录中不能保存重要数据。

  以上是FHS 针对根目录中包含的子目录,除此之外,Linux 系统根目录下通常还包含以下几个一级目录。

  • /lost+found/ #当系统意外崩溃或意外关机时,产生的一些文件碎片会存放在这里。在系统启动的过程中,fsck 工具会检查这里,并修复已经损坏的文件系统。
  • /proc/  #虚拟文件系统。该目录中的数据并不保存在硬盘上,而是保存到内存中。主要保存系统的内核、进程、外部设备状态和网络状态等。如 /proc/cpuinfo 是保存 CPU 信息的,/proc/devices 是保存设备驱动的列表的,proc/filesystems 是保存文件系统列表的,/proc/net 是保存网络协议信息的。
  • /sys/ #虚拟文件系统。和 /proc/ 目录相似,该目录中的数据都保存在内存中,主要保存与内核相关的信息

2.5 Linux级目录及其作用

  /usr目录。usr(注意不是 user),全称为 Unix Software Resource,此目录用于存储系统软件资源。FHS 建议所有开发者,应把软件产品的数据合理的放置在 /usr 目录下的各子目录中,而不是为他们的产品创建单独的目录。Linux 系统中,所有系统默认的软件都存储在 /usr 目录下,/usr 目录类似 Windows 系统中 C:\Windows\ + C:\Program files\ 两个目录的综合体。

  • /usr/local/ #手工安装的软件保存位置。我们一般建议源码包软件安装在这个位置
  • /usr/share/ #应用程序的资源文件保存位置,如帮助文档、说明文档和字体目录
  • /usr/src/ #源码包保存位置。我们手工下载的源码包和内核源码包都可以保存到这里。很多人习惯把手工下载的源码包保存到 /usr/local/src/ 目录中,把内核源码保存到 /usr/src/linux/ 目录中
  • /usr/include #C/C++等编程语言头文件的放置目录
  • /usr/lib/ #应用程序调用的函数库保存位置
  • /usr/XllR6/ #图形界面系统保存位置

  /var 目录。用于存储动态数据,例如缓存、日志文件、软件运行过程中产生的文件等。通常,此目录下建议包含如下这些子目录。

  • /var/lib/ #程序运行中需要调用或改变的数据保存位置。如 MySQL 的数据库保存在 /var/lib/mysql/ 目录中。
  • /var/log/ #登录文件放置的目录
  • /var/run/ #一些服务和程序运行后,它们的 PID(进程 ID)保存位置

  有些目录中不能直接修改和保存数据,比如 /proc/fn/sys/ 目录,因为它们是保存在内存中的,如果在这里写入数据,那么你的内存会越来越小,直至死机;/boot/ 目录也不能保存额外数据,因为 /boot/ 目录会单独分区作为启动分区,如果没有空闲空间,则会导致系统不能正常启动。一般不要修改根目录下的文件和目录,每个用户的文件都放到自己的家目录中。

区块链阶段1-Linux基础- 2 Linux文件系统的更多相关文章

  1. Linux基础与Linux下C语言编程基础

    Linux基础 1 Linux命令 如果使用GUI,Linux和Windows没有什么区别.Linux学习应用的一个特点是通过命令行进行使用. 登录Linux后,我们就可以在#或$符后面去输入命令,有 ...

  2. SLAM+语音机器人DIY系列:(一)Linux基础——1.Linux简介

    摘要 由于机器人SLAM.自动导航.语音交互这一系列算法都在机器人操作系统ROS中有很好的支持,所以后续的章节中都会使用ROS来组织构建代码:而ROS又是安装在Linux发行版ubuntu系统之上的, ...

  3. SLAM+语音机器人DIY系列:(一)Linux基础——3.Linux命令行基础操作

    摘要 由于机器人SLAM.自动导航.语音交互这一系列算法都在机器人操作系统ROS中有很好的支持,所以后续的章节中都会使用ROS来组织构建代码:而ROS又是安装在Linux发行版ubuntu系统之上的, ...

  4. 【转】Linux基础与Linux下C语言编程基础

    原文:https://www.cnblogs.com/huyufeng/p/4841232.html ------------------------------------------------- ...

  5. 区块链阶段1-Linux基础- 1 Linux简介

    对于一般的办公和娱乐我们接触更多的是Windows.但是对于IT从业人员,特别是从事服务器管理以及软件开发的人员来讲,我们需要熟练掌握 Linux/UNIX操作系统的知识.所以,Linux 是众多操作 ...

  6. Linux基础-兄弟连Linux

    Linux基础增强与辅助知识梳理... ------------ Linux学习基础需要学习那些知识 学习Linux对于程序开发的好处 怎样开始学习Linux Linux的学习方法参考 Linux系统 ...

  7. Linux基础:Linux环境下安装JDK

    title: Linux基础:JDK的及环境变量配置 author: Enjoyitlife.top date: 2019-10-09 20:50:36 tags: Linux JDK categor ...

  8. Linux基础系列—Linux体系结构和Linux内核结构

    /** ****************************************************************************** * @author    暴走的小 ...

  9. 【Linux基础】Linux常用命令汇总

    3-1文件目录操作命令(cd pwd mkdir rmdir rm) 绝对路径:由根目录(/)开始写起的文件名或目录名称, 例如 /home/dmtsai/.bashrc: 相对路径:相对于目前路径的 ...

  10. Linux基础之Linux简介

    Linux(英语发音:/ˈlɪnəks/ lin-əks)是一种自由和开放源代码的类UNIX操作系统. Linux简介 Linux(英语发音:/ˈlɪnəks/ lin-əks)是一种自由和开放源代码 ...

随机推荐

  1. error LNK2005: “找到一个或多个多重定义的符号” 已经在 xxxx.obj 中定义 的解决方法

    1 问题还原 这里我有三个源文件:Base.hpp, Base.cpp 和 main.cpp 在Base.hpp里面定义一个基类,注意,基类只包含构造函数和析构函数的声明,函数在Base.cpp里实现 ...

  2. C++中头文件与源文件的作用详解

    一.C++ 编译模式 通常,在一个 C++ 程序中,只包含两类文件―― .cpp 文件和 .h 文件.其中,.cpp 文件被称作 C++ 源文件,里面放的都是 C++ 的源代码:而 .h 文件则被称作 ...

  3. css设置图片百分比显示,最简洁的代码

    css代码: .img-box { padding-bottom: 100%; } .img-box img { position: absolute; top:; bottom:; left:; r ...

  4. unity 编译之后签名被改变

    原因:在gradle 模式下编译,把development build 勾上 会使签名改变

  5. 为群晖加把锁:使用ssh密钥保障数据安全

    对每一个使用群晖nas的人而言,能保证群晖里保存的数据不被未经授权的人访问下载甚至破坏可能是最重要的事情.但数据只要上网,就免不了担心密码被破解,群晖被侵入.现在网络上,要破解密码可能是最简单不过的事 ...

  6. helm笔记

    一.注意事项 1.values.yaml   中可以使用'#'号注释行,而/templates 下的文件不能用#号,如果要注释可以使用 {{/*  context  */}} 2.{{-    #忽略 ...

  7. HTML&CSS基础-伪类选择器

    HTML&CSS基础-伪类选择器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.html源代码 <!DOCTYPE html> <html> & ...

  8. springboot rabbitmq 死信队列应用场景和完整demo

    何为死信队列? 死信队列实际上就是,当我们的业务队列处理失败(比如抛异常并且达到了retry的上限),就会将消息重新投递到另一个Exchange(Dead Letter Exchanges),该Exc ...

  9. mac pro下安装brew软件包管理工具

    Homebrew简称brew,OSX上的软件包管理工具,在Mac终端可以通过brew安装.更新.卸载软件. 1.打开终端直接输入下面指令回车: ruby -e "$(curl -fsSL h ...

  10. Union-Find(并查集): Union-Find Application

    Union-find 可以应用在很多方面 之前我们看到了union-find在dynamic connectivity上的应用,接下来介绍它在percolation上的应用. union-find在K ...