简介

  文件系统就是分区或磁盘上的所有文件的逻辑集合。

  文件系统不仅包含文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。

  不同Linux发行版本之间的文件系统差别很少,主要表现在系统管理的特色工具以及软件包管理方式的不同,文件目录结构基本上都是一样的。

文件系统有多种类型,如:

  • ext2 : 早期linux中常用的文件系统;
  • ext3 : ext2的升级版,带日志功能;
  • RAMFS : 内存文件系统,速度很快;
  • iso9660:光盘或光盘镜像;
  • NFS : 网络文件系统,由SUN发明,主要用于远程文件共享;
  • MS-DOS : MS-DOS文件系统;
  • FAT : Windows XP 操作系统采用的文件系统;
  • NTFS : Windows NT/XP 操作系统采用的文件系统。

分区与目录

  文件系统位于磁盘分区中;一个硬盘可以有多个分区,也可以只有一个分区;一个分区只能包含一个文件系统。

  Linux文件系统与Windows有较大的差别。Windows的文件结构是多个并列的树状结构,最顶部的是不同的磁盘(分区),如 C、D、E、F等。

  Linux的文件结构是单个的树状结构,根目录是“/”其他目录都要位于根目录下

  每次安装系统的时候我们都会进行分区,Linux下磁盘分区和目录的关系如下:

  • 任何一个分区都必须对应到某个目录上,才能进行读写操作,称为“挂载”。
  • 被挂载的目录可以是根目录,也可以是其他二级、三级目录,任何目录都可以是挂载点。
  • 目录是逻辑上的区分。分区是物理上的区分。
  • 根目录是所有Linux的文件和目录所在的地方,需要挂载上一个磁盘分区。

  下图是常见的目录和分区的对应关系:

  为什么要分区,如何分区?

  • 可以把不同资料,分别放入不同分区中管理,降低风险。
  • 大硬盘搜索范围大,效率低。
  • /home、/var、/usr/local 经常是单独分区,因为经常会操作,容易产生碎片。

为了便于定位和查找,Linux中的每个目录一般都存放特定类型的文件,下表列出了各种Linux发行版本的常见目录:

目录 说明
/ 根目录,只能包含目录,不能包含具体文件。
/bin 存放可执行文件。很多命令就对应/bin目录下的某个程序,例如 ls、cp、mkdir。/bin目录对所有用户有效。
/dev 硬件驱动程序。例如声卡、磁盘驱动等,还有如 /dev/null、/dev/console、/dev/zero、/dev/full 等文件。
/etc 主要包含系统配置文件和用户、用户组配置文件。
/lib 主要包含共享库文件,类似于Windows下的DLL;有时也会包含内核相关文件。
/boot 系统启动文件,例如Linux内核、引导程序等。
/home 用户工作目录(主目录),每个用户都会分配一个目录。
/mnt 临时挂载文件系统。这个目录一般是用于存放挂载储存设备的挂载目录的,例如挂载CD-ROM的cdrom目录。
/proc 操作系统运行时,进程(正在运行中的程序)信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。/proc目录伪装的文件系统proc的挂载目录,proc并不是真正的文件系统。
/tmp 临时文件目录,系统重启后不会被保存。
/usr /user目下的文件比较混杂,包含了管理命令、共享文件、库文件等,可以被很多用户使用。
/var 主要包含一些可变长度的文件,会经常对数据进行读写,例如日志文件和打印队列里的文件。
/sbin 和 /bin 类似,主要包含可执行文件,不过一般是系统管理所需要的,不是所有用户都需要。

常用文件管理命令

  你可以通过下面的命令来管理文件:

Command Description
cat filename 查看文件内容。
cd dirname 改变所在目录。
cp file1 file2 复制文件或目录。
file filename 查看文件类型(binary, text, etc)。
find filename dir 搜索文件或目录。
head filename 显示文件的开头,与tail命令相对。
less filename 查看文件的全部内容,可以分页显示,比more命令要强大。
ls dirname 遍历目录下的文件或目录。
mkdir dirname 创建目录。
more filename 查看文件的全部内容,可以分页显示。
mv file1 file2 移动文件或重命名。
pwd 显示用户当前所在目录。
rm filename 删除文件。
rmdir dirname 删除目录。
tail filename 显示文件的结尾,与head命令相对。
touch filename 文件不存在时创建一个空文件,存在时修改文件时间戳。
whereis filename 查看文件所在位置。
which filename 如果文件在环境变量PATH中有定义,那么显示文件位置。

df命令

  管理磁盘分区时经常会使用 df (disk free) 命令,df -k 命令可以用来查看磁盘空间的使用情况(以千字节计),例如:

$df -k
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vzfs 10485760 7836644 2649116 75% /
/devices 0 0 0 0% /devices
$

  每一列的含义如下:

说明
Filesystem 代表文件系统对应的设备文件的路径名(一般是硬盘上的分区)。
kbytes 分区包含的数据块(1024字节)的数目。
used 已用空间。
avail 可用空间。
capacity 已用空间的百分比。
Mounted on 文件系统挂载点。

  某些目录(例如 /devices)的 kbytes、used、avail 列为0,use列为0%,这些都是特殊(或虚拟)文件系统,即使位于根目录下,也不占用硬盘空间。

  你可以结合 -h (human readable) 选项将输出信息格式化,让人更易阅读。

du 命令

  du (disk usage) 命令可以用来查看特定目录的空间使用情况

  du 命令会显示每个目录所占用数据块。根据系统的不同,一个数据块可能是 512 字节或 1024 字节。举例如下:

$du /etc
10 /etc/cron.d
126 /etc/default
6 /etc/dfs
...
$

  结合 -h 选项可以让信息显示的更加清晰:

$du -h /etc
5k /etc/cron.d
63k /etc/default
3k /etc/dfs
...
$

挂载文件系统

  挂载是指将一个硬件设备(例如硬盘、U盘、光盘等)对应到一个已存在的目录上。 若要访问设备中的文件,必须将文件挂载到一个已存在的目录上, 然后通过访问这个目录来访问存储设备。

  这样就为用户提供了统一的接口,屏蔽了硬件设备的细节。Linux将所有的硬件设备看做文件,对硬件设备的操作等同于对文件的操作。

  注意:挂载目录可以不为空,但挂载后这个目录下以前的内容将不可用。

  需要知道的是,光盘、软盘、其他操作系统使用的文件系统的格式与linux使用的文件系统格式是不一样的,挂载需要确认Linux是否支持所要挂载的文件系统格式。

  查看当前系统所挂载的硬件设备可以使用 mount 命令:

$ mount
/dev/vzfs on / type reiserfs (rw,usrquota,grpquota)
proc on /proc type proc (rw,nodiratime)
devpts on /dev/pts type devpts (rw)
$

  一般约定,/mnt 为临时挂载目录,例如挂载CD-ROM、远程网络设备、软盘等。

  也可以通过mount命令来挂载文件系统,语法为:

mount -t file_system_type device_to_mount directory_to_mount_to

例如:

$ mount -t iso9660 /dev/cdrom /mnt/cdrom

  将 CD-ROM 挂载到 /mnt/cdrom 目录。

  注意:file_system_type用来指定文件系统类型,通常可以不指定,Linux会自动正确选择文件系统类型。

  挂载文件系统后,就可以通过 cd、cat 等命令来操作对应文件。

  可以通过 umount 命令来卸载文件系统。例如,卸载 cdrom:

$ umount /dev/cdrom

  不过,大部分现代的Linux系统都有自动挂载卸载功能,unmount 命令较少用到。

用户和群组配额

  用户和群组配额可以让管理员为每个用户或群组分配固定的磁盘空间。

  管理员有两种方式来分配磁盘空间:

  • 软限制:如果用户超过指定的空间,会有一个宽限期,等待用户释放空间。
  • 硬限制:没有宽限期,超出指定空间立即禁止操作。

  下面的命令可以用来管理配额:

命令 说明
quota 显示磁盘使用情况以及每个用户组的配额。
edquota 编辑用户和群组的配额。
quotacheck 查看文件系统的磁盘使用情况,创建、检查并修复配额文件。
setquota 设置配额。
quotaon 开启用户或群组的配额功能。
quotaoff 关闭用户或群组的配额功能。
repquota 打印指定文件系统的配额。

http://www.cnblogs.com/0201zcr/p/4773995.html 

linux 文件系统解析及相关命令(转)的更多相关文章

  1. linux 文件系统解析及相关命令

    简介 文件系统就是分区或磁盘上的所有文件的逻辑集合. 文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件.目录.软连接及文件保护信息等都存储在其中. 不同Lin ...

  2. linux 目录结构及其相关命令

    目录也是一个文件,它的唯一功能是用来保存文件及其相关信息.所有的文件,包括普通文件.设备文件和目录文件,都会被保存到目录中. 主目录 登录后,你所在的位置就是你的主目录(或登录目录),如果是root用 ...

  3. 《The Linux Command Line》 读书笔记04 Linux用户以及权限相关命令

    Linux用户以及权限相关命令 查看身份 id:Display user identity. 这个命令的输出会显示uid,gid和用户所属的组. uid即user ID,这是账户创建时被赋予的. gi ...

  4. Linux 查看磁盘空间 相关命令

    Linux 查看磁盘空间 相关命令 实际工作中,我们经常需要查看磁盘空间的使用情况,以防止磁盘空间不足,导致的系统崩溃或者服务异常等问题. 常用的磁盘空间查看命令如下: 1.查看磁盘空间的整体使用情况 ...

  5. Linux文件系统简介及常用命令

    在linux系统中一切皆是文件,下面简要总结了一下linux文件系统中分区类型.文件系统类型以及常用命令. 一.分区类型1.主分区:最多只能有四个2.扩展分区:只能有一个,也可以看做是主分区的一种.即 ...

  6. linux ftp 安装及相关命令

    1.VSFTP简介 VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP 从此名称可以看出来,编制者的初衷是代码的安全. 安全性是编写VSF ...

  7. linux 常用文本操作相关命令

    平时工作经常会对文本进行相关操作,包括读写.替换.统计等等,借此整理和学习一下有关命令. 1. cat 查看文件中的内容, -n 查看时为每一行加编号; -b 和-n类似,只不过对于空白行不编号: 2 ...

  8. Linux网络配置及相关命令

    Linux的网络配置是曾一直是我学习Linux的埋骨之地,投入了大量的精力和心神让自己的虚拟机联网.后来发现,仅仅是一个大意,我在这个坑上一躺就是一年半.现在总结一下这个伤心地.希望对有帮助. VMw ...

  9. Linux(三) - 文件操作相关命令

    Ctl-A 光标移动到行首 Ctl-C 终止命令 Ctl-D 注销登录 Ctl-E 光标移动到行尾 Ctl-U 删除光标到行首的所有字符,在某些设置下,删除全行 Ctl-W 删除当前光标到前边的最近一 ...

随机推荐

  1. 使用Xamarin在Visual Studio中开发Android应用

    原文:使用Xamarin在Visual Studio中开发Android应用 本文使用的环境是Windows 8 Visual Studio 2012.2 1.下载Xamarin http://xam ...

  2. mysql copy复制拷贝表数据及结构的几种方式(转)

    mysql拷贝表操作我们会常常用到,下面就为您详细介绍几种mysql拷贝表的方式,希望对您学习mysql拷贝表方面能够有所帮助.假如我们有以下这样一个表:id username password--- ...

  3. 入门git

    入门git   0x01前言 既然没有华丽的出场,那就平凡的分享,首先我要说明一点本篇文章针对Git初学者,对我自己学Git的资源的整合,其实本篇索引应该在我写Git系列文章的时候就紧跟着放上索引的, ...

  4. EasyUI基础searchbox&progressbar(搜索框,进度条)

    easyui学习的基本组成部分(八个部分)硕果仅存searchbox和pargressbar.tooltip该,有一点兴奋.本文将偏向searchbox和pargressbar做一个探讨.鉴于双方的内 ...

  5. iOS 真机调试(最具体的步骤来解决历史,hmt精心打造)

    /*************************************************************1************************************* ...

  6. myEclipse勿删文件怎么恢复

    今天码代码的时候项目里有一个jsp文件不小心被删了,又懒得重写,然后发现myEclipse竟然可以恢复被勿删的文件,当然,也仅仅限于最近被删的文件. 具体怎么恢复呢?-------右键点击被删文件所在 ...

  7. 返璞归真 asp.net mvc (2) - 路由(System.Web.Routing)

    原文:返璞归真 asp.net mvc (2) - 路由(System.Web.Routing) [索引页] [源码下载] 返璞归真 asp.net mvc (2) - 路由(System.Web.R ...

  8. 编译命令行终端 swift

    So, this is where swift lives, after you've installed XCode 6 Beta: /Applications/Xcode6-Beta.app/Co ...

  9. Channel Allocation (poj 1129 dfs)

    Language: Default Channel Allocation Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12 ...

  10. 【转】c#实现字符串倒序的n种写法

    其中LINQ写法最为简洁 //string concatenation with for loop public string ReverseA(string text) {     char[] c ...