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. .net core web API使用Identity Server4 身份验证

    一.新建一个.net core web项目作为Identity server 4验证服务. 选择更改身份验证,然后再弹出的对话框里面选择个人用户账户. nuget 安装Identity server相 ...

  2. 前端开发 Vue Vue.js和Nodejs的关系

    首先vue.js 是库,不是框架,不是框架,不是框架. Vue.js 使用了基于 HTML 的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据. Vue.js 的核心是一个允许你 ...

  3. 把时间戳转换为 datatime 格式

    使用time timeStamp = 1381419600 timeArray = time.localtime(timeStamp) otherStyleTime = time.strftime(& ...

  4. Delphi - 程序运行时不显示主窗体

    // 不显示主窗体 Application.ShowMainForm := False;

  5. Fortify漏洞之Insecure Randomness(不安全随机数)

    继续对Fortify的漏洞进行总结,本篇主要针对  Insecure Randomness  漏洞进行总结,如下: 1.Insecure Randomness(不安全随机数) 1.1.产生原因: 成弱 ...

  6. ..\USER\stm32f10x.h(428): error: #67: expected a "}" ADC1_2_IRQn = 18, /*!

    MDK软件编译,出现如下错误: ..\USER\stm32f10x.h(428): error: #67: expected a "}" ADC1_2_IRQn = 18, /*! ...

  7. 通过标签名获得td和tr

    <tr node="123445"> <td> <input type=button name="dak"> </td ...

  8. js基础知识3

    系统对话框方法 警告框 window.alert('mcw'); 效果显示 确认框 var a = window.confirm('你确定要离开网站?'); console.log(a); 如果点击确 ...

  9. ICS2019汇编实验在Linux下使用GDB调试程序

  10. Lock wait timeout分析

    ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction分析 1.4个用户连接数据库(A和D是本地回环登陆, ...