Linux及文件系统基本介绍
Linux及文件系统基本介绍
1 互联网行业现状
在服务器端市场:
- 超级计算机
-
- 2014年11月的数据显示前500系统中的485个系统都在运行着 Linux 的发布系统,而仅仅只有一台运行着 Windows 系统
- 截止到目前,运行 Linux 系统的处理器有 22,851,693 个之多,而 windows 系统仅仅只有 30,720
- 云计算
-
2014年 Linux 基金会撰写了一个报告,研究发现 75% 的大公司在使用 Linux 系统作为他们的主要平台,相对的使用 Windows 系统的只占 23%
移动端市场:
基于Linux的Android系统,在2014年第三季度的智能手机出货量中,Andriod 设备的市场份额从去年同期的 81.4% 上升到了 83.6%
嵌入式系统:
自2013 年的研究数字表明,按规划,大约一半的嵌入式系统将会采用 Linux。目前也诞生了越来越多的基于Linux的智能硬件设备,例如:智能路由器。
由于本系列的文章主要是对互联网的软件开发和测试进行介绍,按照目前的行业趋势,Linux系统已经成为互联网行业的最主要的生产力平台了,相关从业人员完全有必要对Linux系统进行学习和了解。
2 典型的计算机系统
一个典型的计算机系统由软件和硬件两部分构成。
其中硬件系统由如下几部分构成:
- 中央处理器
- 存储器
- 外部输入输出(IO)设备
各部分的组成部分如下下图:

计算机的软件则是硬件之上的运行程序和相应的文档。
操作系统则是运行在计算机硬件之上的最基础的软件系统,常见的系统有:
- PC端
-
- Windows
- Linux
- Mac OS
- 其它
- 移动端
-
- iOS
- Android
- Windows Phone
- 其它
在如今移动设备已经如此普及的年代,相信大家已经能够认识到操作系统其实不仅仅只是Windows了,而是基于一定的原理能够百花齐放的基础软件系统。
3 Linux基本介绍
正如前面提及,一个基本的计算机系统由“硬件”和“软件”组成,一台Linux设备,主要的组成如下图所示:

一般情况下,我们所说的Linux系统,特指中间内核级的部分,我们看到的Linux的桌面Desktop,例如:KDE,GNOME都只是普通的应用程序而已。Linux的核心在于其内核,内核是应用程序和硬件程序联系的纽带。
Linux的人机交互方式有两种:
- 图形交互界面
- 命令行交互接口(CLI)
图形界面,从Windows下转过来的用户应该不陌生,但是图形界面不是Linux的精髓,作为一个高级的计算机工作者,应该能够透过现象看本质,所有的计算软件的本质其实都是数据的处理和流通。Desktop不是Linux,所以后面将逐渐脱离Desktop,而转向对Linux进行学习和研究。
4 Linux两种交互方式
以查看Linux的根文件系统下的文件为例子,来对比两种交互方式的不同。
在Desktop下面,打开文件管理图形应用程序:

在CLI下面输入ls命令:
➜ / ls
bin deepinhost etc initrd.img.old lost+found opt run sys var
boot dev home lib media proc sbin tmp vmlinuz
cxassoc disk initrd.img lib64 mnt root srv usr vmlinuz.old
在图形界面上通过不同的视图或者属性可以查看到更多的文件目录和信息,同样在CLI界面上可以输入不同的命令参数,得到相应的文件目录的文本描述信息。
同样的,Linux的其它常用系统管理工具,如:
- 磁盘管理
- 网络管理
- 进程管理
- 软件管理
都有对应的桌面程序和CLI程序来提供管理,后续会详细展开,在此不一一赘述。总之,从承载的信息上来看,两种交互基本上是等价的,甚至严格来说CLI可以提供的操作甚至多于图形用户界面。因为图形用户界面可以说是一种更高层的应用,是对CLI功能的进一步封装的图形表现方式而已。
如果作为普通的桌面级消费用户来说,掌握图形交互和图形界面应用即可,但是对于Linux的开发人员来说,则一定要熟练掌握CLI命令来完成对系统的各种操作和调用。
5 文件目录及系统
和Windows完全不同,Linux下面的所有目录都来自于 "/" 目录,没有将硬盘分区成C、D、E盘。Linux下所有的文件系统都衍生于同一个根节点,所有的磁盘必须挂载在文件系统相应的目录下面。

不管是Windows还是Linux,都有如下流程:
新购置的物理硬盘,必须要分区,不管是分一个区还是多个区。这个分区实际上是对磁盘的分区表进行数据定入,和启动位置有关
- 分区的硬盘必须要格式化相应的文件系统
-
- Windows系统一般是NTFS文件系统
- Linux系统一般是EXT4文件系统
- 被格式化的磁盘必须要挂载到操作系统相应的文件目录下
-
- Windows相当于在C/D/E盘之上还有一个根目录,但是显然它实际上没有按照这种观念来普及此系统。Windows系统自动帮用户完成了挂载分区到目录的工作,即自动将磁盘分区挂载到C/D/E盘的“目录”
- Linux则除了会自动挂载根分区启动项外,别的需要用户自己配置。
在Linux系统中,信息的基本组织单位称作文件。对于物理设备,Linux也通过文件系统来提供了简化的访问方式,用户可以使用同样的命令处理普通文件和物理设备。
6 标准文件结构
在根目录下,列出Linux的主要目录:
➜ / ll
总用量 104K
drwxr-xr-x root root .0K 9月 : bin
drwxr-xr-x root root .0K 9月 : boot
drwxr-xr-x root root .3K 9月 : dev
drwxr-xr-x root root .0K 9月 : disk
drwxr-xr-x root root 12K 9月 : etc
drwxr-xr-x root root .0K 8月 : home
drwxr-xr-x root root .0K 9月 : lib
drwxr-xr-x root root .0K 9月 : media
drwxr-xr-x root root .0K 8月 : mnt
drwxr-xr-x root root .0K 8月 : opt
dr-xr-xr-x root root 9月 proc
drwx------ root root .0K 9月 : root
drwxr-xr-x root root 9月 : run
drwxr-xr-x root root 12K 9月 : sbin
drwxr-xr-x root root .0K 4月 : srv
dr-xr-xr-x root root 9月 sys
drwxrwxrwt root root .0K 9月 : tmp
drwxr-xr-x root root .0K 4月 : usr
drwxr-xr-x root root .0K 8月 : var
……
关于根目录下的文件描述,Linux是有一套标准可以进行参考:FHS(Filesystem Hierarchy Standard)。
本文只对主要的目录的功能介绍。
- boot目录
- 包含系统引导程序,Linux内核程序文件vmlinuz,磁盘内存映像文件initrd以及GRUB初始化引导程序和配置文件
除了boot目录,系统启动必须的5个目录:
- dev
-
系统设备目录。在Linux系统下,任何设备都对应着一个或多个设备文件,例如磁盘对应着 /dev/sd*文件
- etc
-
Linux系统运行的配置文本文件
- lib
-
该目录含有系统引导过程,及运行系统命令所需要挟内核模块和各种动态链接共享库文件
- sbin
-
超级用户组使用的系统命令
- bin
-
系统管理员和普通用户共享的各种通用命令程序
记忆方法
目录简称拼接:delsb,删除SB,谁删除这其中的目录了,谁就是那啥啥了 ^_^
其它主要会经常碰到的目录:
- home
-
用户主目录的根目录,每增加一个新用户,系统都会在此目录下面增加一个和用户名相同的目录,存储用户相关的配置及数据
- media
-
移动存储介质的安装点
- mnt
-
文件系统的临时挂载点
- opt
-
应用程序等附加软件的安装目录
- var
-
存储各种可变长的数据文件,如日志文件等等
- usr
-
Unix Soft Resource 存储系统提供的各种共享数据(用户命令、库函数、头文件和文档等)
- root
-
超级管理员的主目录
- tmp
-
临时文件目录,系统重启后会自动清空
- proc
-
进程文件系统的根目录,是一个虚拟文件系统,通过对此目录的文件读取可以获取系统运行态的很多信息:如CPU、内存、运行时间等等
关于根目录下的其它目录及其子目录的详细介绍及目录之间的区别,请参考linux官网关于 FHS 的最新更新(基本上每年都会有更新)。
7 文件描述及权限
在Linux下面对文件的操作有个很重要的概念,就是:文件权限。很多初学者认为Linux不好用,基本上很大的原因就是止步于这个地方就没有深入研究下去。因为对于任何一个系统来讲,文件数据的各种操作肯定是很高频的交互,在Linux系统下,如果不了解文件系统的权限概念,那么在对文件数据进行操作的时候,必然会遇到各种阻碍,然后不得已而放弃了Linux的继续研究。
在图形界面下,文件的权限是通过在文件图标是否上锁(或者X号等)来进行形象可视化,在CLI界面,则是通过特殊的文本标记来显示:
➜ / ll |grep bin
drwxr-xr-x root root .0K 9月 : bin
drwxr-xr-x root root 12K 9月 : sbin
如上对目录及文件的描述一共7段:
- permissions:文件的详细信息,主要是权限信息/类型信息
- link:文件硬链接数或目录子目录数
- user:文件所属用户
- group:文件所属组
- size:文件大小
- time:文件创建时间
- file:文件名称
记忆方法
七段的英文简称连写为:
PLUGSTF
参考记忆:插入TF卡
- PLUGS:插头
- TF:目前手机上使用的小型SD扩展卡
PLUG 部分是重要的权限组成部分,在Linux下进行操作,最最重要的基础概念就是文件的权限概念,如果这个没弄清楚,则会经常遇到各种阻碍。
7.1 文件类型及权限
典型的文字文件权限描述字符如下所示:
drwxr-xr-x
一共10位,按照功能对位进行划分,总共可以分为4个功能段,如下表所示:
| 类型 | 用户权限 | 组权限 | 其它权限 |
|---|---|---|---|
| 1 | 3 | 3 | 3 |
| d | rwx | r-x | r-x |
第一段表示文件的类型:
d: directory,表示目录
-: 短横线“空”表示普通文件,例如:文本文件,二进制文件
l: link,表示链接文件,例如:快捷方式
b: block,表示块状设备,例如:磁盘
c: character,表示字符特殊文件,例如:控制台终端/打印机等等
p: pipe,管理文件
- 其它类型
-
一般对于应用层开发人员,最多接触的就是目录和普通文件两种,其它有兴趣的可以去具体的查阅相应的资料。
纯粹的文件操作权限的描述有三类:
- r 可读
- w 可写
- x 可执行
对文件操作的使用者身份划分成三类:
- U User 直接从属用户
- G Group 文件所属组
- O Other 不属于上面两样的其它用户
文件权限的三段,对应着不同的使用者身份对此文件的不同权限,任何身份的用户不能够对文件做超过其权限的事情。
特别注意,在Linux系统下:
- 不是通过扩展名来判定程序的类型的
- 不是通过 .exe 来判定程序是否可执行,而是通过 x 属性表明此文件可以被执行
- 和文件不同,目录的 x 属性表示可以将工作路径切换到目录里面
权限相关的9位,分别通过是1或者0来表示是不具有相应的权限,所以会产生如下的一些常见的数字值来表示文件的权限(使用一个小于8的整数来表示3个bit位的状态值):
- 777
-
111 111 111 表示对于U,G,O都是读/写/可执行全开发权限
- 666
-
110 110 110 表示对于U,G,O都是可读写但是不可执行
- 644
-
110 100 100 表示对于U是可读写,对于U和O则是只读的
所以如果要将某个文件修改为对所有的用户/组/其它都是可读写及执行的权限,可以执行如下命令:
chmod xxx_file
或者使用一种主义化的方式来添加权限:
chmod a+rwx xxx_file
关于文件的权限及操作者身份限定,CLI里面提供了丰富的命令行工具,基本上用户可以通过这些命令完成所有对文件系统所需要的操作。具体的命令及操作,可以查阅相应的书藉和文档,多加练习,熟练操作即可。
7.2 其它描述信息
- 文件大小
- 创建时间
- 文件名称
这些信息的用途正如其名称一样直观和明确,在此不再赘述。
8 文件和目录的基本操作
对文件和目录的基本操作包括但不限于:
- 目录创建和删除
- 文件创建/修改/删除
- 文件或目录的移动
- 文件或目录名称修改
- 文件查找
等等,这些工具类的使用及熟练,属于比较低级的知识阶段,了解前面的理论框架后,只需要不断重复的操作练习即可,使之成为不经过大脑就可以快速操作的基本本领。
这些命令行,在相应的Linux介绍书藉,或者网络技术文章里面到处都是,在此也略去不表。
9 小结
本文的目标是以最小的篇幅,尽快的给Linux初学者建立整体的Linux的认识,具体各部分的延伸细节和工具的介绍,本文篇幅有限,就都不做详细的介绍。那些碎片化的信息,有低门槛的获取途径(通过网络搜索引擎),和低门槛的加强学习方式(不断练习,熟能生巧),都不是本文的重点,本文及后续的系列文章,主要是在假定从业人员有了一定的Linux操作基础的情况下,而展开的Linux的应用领域的技能。
最后重申一句话: 工具很重要,但是不是目的,对于工具,最好的估计就是“有空时不断的加强练习,熟练操作”,使之成为不经大脑的习惯,然后自己有更多的时间和更高效的方式去解决高层次的问题。
| 作者: | Harmo哈莫 |
|---|---|
| 作者介绍: | https://zhengwh.github.io |
| 技术博客: | http://www.cnblogs.com/beer |
| Email: | dreamzsm@gmail.com |
| QQ: | 1295351490 |
| 时间: | 2015-09-18 |
| 版权说明: | 未经许可,严禁用于商业目的的非法传播 |
| 联系或打赏: | http://zhengwh.github.io/contact-donate.html |
Linux及文件系统基本介绍的更多相关文章
- linux下文件系统的介绍
一.linux文件系统的目录结构 目录 描述 / 根目录 /bin 做为基础系统所需要的最基础的命令就是放在这里.比如 ls.cp.mkdir等命令:功能和/usr/bin类似,这个目录中的文件都是可 ...
- Linux文件系统的介绍
1.Linux的文件系统是一个典型的树形结构,只有一个根节点 如下图: 2.在Linux中一切皆文件 Linux 对数据文件(.mp3..bmp),程序文件(.c..h.*.o),设备文件(LCD.触 ...
- linux内核文件系统:proc、tmpfs、devfs、sysfs简要介绍
linux内核文件系统:proc.tmpfs.devfs.sysfs proc:虚拟文件系统,在linux系统中被挂载与/proc目录下.里面的文件包含了很多系统信息,比如cpu负载. 内存.网络配置 ...
- Linux Swap交换分区介绍总结
Swap交换分区概念 什么是Linux swap space呢?我们先来看看下面两段关于Linux swap space的英文介绍资料: Linux divides its physical RA ...
- 文件系统管理 之 Linux 创建文件系统及挂载文件系统流程详解
阅读此文,必须具备知识点:<Linux 查看磁盘分区.文件系统.使用情况的命令和相关工具介绍><实例解说 fdisk 使用方法><合理规划您的硬盘分区><Fe ...
- linux下文件系统类型的学习
1. 以超级用户权限登陆Linux,进入 /lib/modules/2.6.32--504.el6.x86_64/kernel/fs目录执行 ls 命令(不同Linux发行版本的Fs目录有些不同你可 ...
- Linux根文件系统的制作
转载:http://www.cnblogs.com/hnrainll/archive/2011/06/09/2076655.html 1. 根文件系统 文件系统是包括在一个磁盘(包括光盘.软盘.闪盘及 ...
- linux的文件系统及节点表
linux的文件系统及节点表 一 linux的文件系统1 我们都知道当我们安装linux时会首先给系统分区,然后我们会把分区格式化成EXT3格式的文件系统.那么在linux系统中还有没有其他的文件系 ...
- linux虚拟文件系统2
转自:http://rstevens.iteye.com/blog/849413 一.概述 Linux 文件系统是相当复杂的,本文只分析虚拟文件系统的实现,对具体的文件系统不涉及. 即使是虚拟文件系统 ...
随机推荐
- Java常用的7大排序算法汇总
1.插入排序算法 插入排序的基本思想是在遍历数组的过程中,假设在序号 i 之前的元素即 [0..i-1] 都已经排好序,本趟需要找到 i 对应的元素 x 的正确位置 k ,并且在寻找这个位置 k 的过 ...
- python课程第二周重点记录
python课程第二周重点记录 1.元组的元素不可被修改,元组的元素的元素可以被修改(字典在元组中,字典的值可以被修改) 2.个人感觉方便做加密解密 3.一些方法的使用 sb = "name ...
- 2. Abstract Factory(抽象工厂)
意图: 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 适用性: 一个系统要独立于它的产品的创建.组合和表示时. 一个系统要由多个产品系列中的一个来配置时. 当你要强调一系列相关 ...
- Numpy 学习之路(1)——数组的创建
数组是Numpy操作的主要对象,也是python数据分析的主要对象,本系列文章是本人在学习Numpy中的笔记. 文章中以下都基于以下方式的numpy导入: import numpy as np fro ...
- 百度地图里面搜索到的公司商家电话导出表格?怎样将把百度地图里面搜索到的公司 电话 地址 等数据导出excel里?
好多人在问:如何将百度地图里面搜索到的公司商家电话导出表格?怎样将把百度地图里面搜索到的公司 电话 地址 等数据导出excel里? 现在,很多人都在网络上找商家,联系业务. 百度地图里有很多的商家联系 ...
- NOIP2010 题解
机器翻译 题解:模拟 #include <cstdio> #include <cstring> ; ], ]; int main(){ memset(, sizeof(in)) ...
- How to copy remote computer files quickly to local computer
if we want copy file from VM(Remote VM) to local computer. Always can not easy copy file so easy. no ...
- 使用jailkit chroot更改ssh用户根目录
安装jailkit cd /tmp wget http://olivier.sessink.nl/jailkit/jailkit-2.16.tar.gz tar xzf jailkit-2 ...
- [UCSD白板题] The Last Digit of a Large Fibonacci Number
Problem Introduction The Fibonacci numbers are defined as follows: \(F_0=0\), \(F_1=1\),and \(F_i=F_ ...
- Linux内核分析之扒开系统调用的三层皮(下)
一.实验内容 1. 通过内核的方式使用系统调用 需要使用的命令 rm menu -rf //强制删除当前menugit clone http://github.com/mengning/menu.gi ...