学习笔记,内容基础,适合初学者。


阅读之前,请务必花30秒查看前言说明(在第一、二章前面部分)

《Unix & Linux 大学教程》 - 第一、二章 学习笔记   Unix简介 & 什么是Linux?什么是Unix
《Unix & Linux 大学教程》 - 第三、四章 学习笔记   Unix连接 & 开始使用Unix
《Unix & Linux 大学教程》 - 第五、六章 学习笔记   GUI:图形用户界面 & Unix工作环境
《Unix & Linux 大学教程》 - 第七、八章 学习笔记   Unix键盘使用 & 能够立即使用的程序
《Unix & Linux 大学教程》 - 第九、十章 学习笔记   文档资料:Unix手册与Info & 命令语法
《Unix & Linux 大学教程》 - 第十一、十二章 学习笔记   shell & 使用shell:变量和选项
《Unix & Linux 大学教程》 - 第十三章 学习笔记   使用shell:命令和定制
《Unix & Linux 大学教程》 - 第十四、十五章 学习笔记   使用shell:初始化文件
《Unix & Linux 大学教程》 - 第十六、十七章 学习笔记   过滤器:简介和基本操作
《Unix & Linux 大学教程》 - 第十八章 学习笔记   过滤器:统计和格式化
《Unix & Linux 大学教程》 - 第十九章(一) 学习笔记   过滤器:选取、排序、组合及变换
《Unix & Linux 大学教程》 - 第十九章(二)、第二十章 学习笔记 过滤器:选取、排序、组合及变换 正则表达式
《Unix & Linux 大学教程》 - 第二十一章 学习笔记 显示文件
《Unix & Linux 大学教程》 - 第二十二章(一) 学习笔记 vi文本编辑器(一)
《Unix & Linux 大学教程》 - 第二十二章(二) 学习笔记 vi文本编辑器(二)
《Unix & Linux 大学教程》 - 第二十二章(三) 学习笔记 vi文本编辑器(三)
《Unix & Linux 大学教程》 - 第二十三章 学习笔记 Unix文件系统
《Unix & Linux 大学教程》 - 第二十四章 学习笔记 目录操作
《Unix & Linux 大学教程》 - 第二十五章 学习笔记 文件操作
《Unix & Linux 大学教程》 - 第二十六章(一) 学习笔记 进程和作业控制
《Unix & Linux 大学教程》 - 第二十六章(二) 学习笔记 进程和作业控制





第二十三章:Unix文件系统

文件类型

普通文件(ordinary file)(常规文件,regular file)

目录(文件夹)

伪文件:不用来存储数据,所以不占用空间

3种最重要的伪文件

特殊文件(设备文件):是物理设备的内部表示,Unix所有特殊文件存放在/dev(device,设备)目录中

命名管道:将一个程序的输出连接到另一个程序上

proc文件:允许访问内核信息。特定情况下,可以通过它修改内核数据




硬件
/dev/fd0软盘
/dev/hda硬盘
/dev/hda1硬盘:第一分区
dev/sdaSCSI硬盘
/dev/sda1SCSI硬盘:第一分区
/dev/sda1USB闪存卡
/dev/lp0打印机
/dev/usb/lp0USB打印机
终端
/dev/tty当前终端
/dev/tty1控制台/虚拟控制台
/dev/pts/0伪终端
/dev/ttyp0伪终端
伪设备
/dev/null放弃输出,输入不返回内容(eof)
/dev/zero放弃输出,输入返回null(0)
/dev/random随机数生成器
/dev/urandom随机数生成器

软盘与打印机是用数字编号,从0开始。比如/dev/fd0,/dev/fd1……

硬盘用字母编号,从a开始。不如/dev/hda,/dev/hdb……对于一块硬盘多个分区的情况,则会使用类似二级角标形式/dev/hda1,/dev/hda2(这里的数字从1开始!)

SCSI和SATA硬盘名称为/dev/sda,其他规则同上




位桶(bit bucket)

写到下面两个设备中的任何输出都会被抛弃

null文件(/dev/null)

zero文件(/dev/zero)

处理输出时,null和zero相同

处理输入时,程序从/dev/null读取数据,不管请求输入多少字节,总是返回eof信号。

从/dev/zero读取数据时,文件生成和请求一样多的字符,但是值都是0,在Unix中,认为这个值是null字符。清除数据的时候可以用null字符覆盖已有的数据




命名管道

语法:

mkfifo [-m modepipe

mode是chmod程序使用的一种文件模式类型(25章),现在暂时忽略-m选项

pipe是管道名称


使用

mkfifo fifotest(创建一个名为fifotest的管道)

grep bash /etc/passwd > fifotest(把输出写入到fifotest管道中)

wc -l < fifotest(从fifotest读取数据)

rm fifotest(删除此管道)

结果与下面相同

cat /etc/passwd | wc -l

主要用于进程间通信




proc文件

所有的proc文件都在/proc目录下,系统每一个进程对应一个子目录,名称为进程ID

proc文件相关信息
/proc/xxx/进程#xxx
/proc/cmdline内核选项
/proc/cpuinfo处理器
/proc/devices设备
/proc/diskstats逻辑磁盘设备
/proc/filesystems文件系统
/proc/meminfo内存管理
/proc/modules内核模块
/proc/mounts已挂载设备,挂载点
/proc/partitions磁盘分区
/proc/scsiSCSI和RAID设备
/proc/swaps交换分区
/proc/uptime内核运行时间(秒),内核空闲时间(秒)
/proc/version内核版本、分发、gcc
/proc/kcore计算机实际物理内存

ls -l /proc/kcore 

-r-------- 1 root root 140737486266368 2012-10-22 16:07 /proc/kcore(伪文件,不占用空间)



挂载文件系统:mount、umount

文件系统层次结构标准要求使用特定的目录挂载文件系统

对于没有挂载在其他位置的固定介质(例如额外的硬盘)来说,指定目录是/mnt

对于可移动介质来说,目录是/media



根目录(顶级目录,toplevel directory)目录结构

目录内容
/根目录
/bin基本程序
/boot启动系统时所需的文件
/dev设备文件
/etc配置文件
/home用户的home目录
/lib基本共享库,内核模块
/lost+found由fsck恢复的受损文件
/media可移动介质的挂载点
/mnt不能挂载在其他位置上的固定介质的挂载点
/opt第三方应用程序
/procproc文件
/root超级用户的home目录
/sbin由超级用户运行的基本系统管理程序
/srv本地系统所提供服务的数据
/tmp临时文件
/usr静态数据使用的辅助文件系统
/var可变数据使用的辅助文件系统

目录存放的内容

/bin:系统管理员在单用户模式下管理系统所需的基本工具。都是可执行文件

/boot:系统存放引导过程中所需全部文件的位置,内核必须位于这个目录或根目录中。如果升级过系统,则目录下有多个内核文件

/dev:所有特殊文件。此目录下的makedev程序用来创建新的特殊文件

/etc:配置文件

/home:存放个人文件和目录,与用用户标识相同,比如我的home为/home/su1216

/lib:包含运行/bin和/sbin目录中的程序所需的基本库和内核模块

/lost+found:如果Unix没有正常关机,那些仅完成部分写入的文件将收到损坏,Unix下次启动时,fsck将自动运行,检查文件系统并修复问题。如果发现损坏的文件,那么fsck将挽救这些文件,并将他们移动到/lost+found中

/media:可移动介质的挂载点

/mnt:这是不会在其他位置挂载的固定介质(例如额外的硬盘)的挂载点。(说的也太拗口了,如有没理解错的话,他是想说:这是固定介质唯一的挂载点)

/opt:第三方应用程序

/root:root用户的home

/sbin(system binaries):系统二进制文件

/tmp:临时存储,最终它的内容将被移除

/usr:辅助文件系统的根,目的用来存放静态数据(没有系统管理员的干涉不会改变的数据)。以前用来存放home

/var:辅助文件系统的根,目的用来存放可变数据。例如:日志文件、打印文件、电子邮件等




/usr目录

目录内容
/usr/bin非基本程序(大多数用户程序)
/usr/includeC程序的头文件
/usr/lib非基本共享库
/usr/local本地安装程序
/usr/sbin由超级用户运行的非基本系统管理程序
/usr/share共享系统数据
/usr/src源代码(只用于参考)
/usr/X11存放着大量由X Window使用的程序
/usr/games游戏、娱乐、教育程序

/usr/bin:可执行程序,比/bin中要多

/usr/include:C和C++程序员所使用的include文件(头文件)的存储区

/usr/lib:同/lib

/usr/local:存放本地程序和文档资料

/usr/sbin:同/sbin,与/usr/bin和/bin的关系一样

/usr/share:用户和程序间共享文件

字典文件在/usr/share/dict/words

Unix手册在/usr/share/man

Info系统在/usr/share/info

/usr/src:有一些包含系统源代码的子目录,只用来做参考。许多Linux系统上,内核的源代码位于/usr/src/linux

/usr/X11:存放着大量由X Window使用的程序

/usr/games:游戏、娱乐、教育程序




通用程序(可以由任何人使用)
/bin基本程序
/usr/bin非基本程序
/usr/local/bin本地安装程序
系统管理程序(只能由超级用户使用)
/sbin由超级用户运行的基本系统管理程序
/usr/bin由超级用户运行的非基本系统管理程序
/usr/local/sbin本地安装的系统程序
第三方应用程序
/opt/xxx应用程序xxx的静态数据,包括程序
/var/opt/xxx应用程序xxx的可变数据




/home目录

许多系统上,/home目录属于辅助文件系统,所以在挂载之前不可用

每次登录时,环境变量HOME被设置为字节home的名称,可以通过下面方式查看

echo $HOME或echo ~



环境变量PATH(搜索路径)

每当输入不是shell内置程序的程序名称时,Unix就会在搜索路径所指定的目录中进行搜索




虚拟文件系统

引导加载程序接管计算机,从引导设备中读取数据,从而将操作系统加载到内存中。

大多数情况下,引导设备是本地硬盘驱动器上的一个分区,但是也可以是网络设备、CD、闪存驱动器等

在引导设备的数据中有初始的Unix文件系统,称为根文件系统

根文件系统自动挂载,其中存放着启动Unix所需的全部程序和数据文件,还包含系统出现问题时管理员需要使用的工具

根文件系统至少包含下述目录

/bin

/boot

/dev

/etc

/lib

/root

/sbin

/tmp

一旦挂载了根文件系统,内核也就启动完毕,就会自动挂载其他设备文件系统


根文件系统总是存储在引导设备上

有3个其他文件系统可能位于单独的设备上:usr、var、home

基于磁盘的文件系统

ext3

第3代扩展文件系统(Linux)
ext4第4代扩展文件系统(Linux)
FAT3232位文件分配表文件系统(Microsoft Windows)
HFS+层次式文件系统(Macintosh)
ISO 9660ISO 9660 标准文件系统(CD-ROM)
NTFSNT文件系统(Microsoft Windows)
UDF通用磁盘格式文件系统(可重写CD和DVD)
UFS2Unix文件系统(BSD、Solaris)
网络文件系统
NFS网络文件系统(广泛使用)
SMB服务器信息块(Windows 网络)
特殊用途文件系统
devpts伪终端的设备界面(PTY)
procfsproc文件系统
sysfs系统数据文件系统(设备与驱动器)
tmpfs临时存储文件系统






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





转贴请保留以下链接

本人blog地址

http://su1216.iteye.com/

http://blog.csdn.net/su1216/

Logo

更多推荐