《Unix & Linux 大学教程》 - 第二十三章 学习笔记

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


阅读之前,请务必花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/sda SCSI硬盘
/dev/sda1 SCSI硬盘:第一分区
/dev/sda1 USB闪存卡
/dev/lp0 打印机
/dev/usb/lp0 USB打印机
终端
/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/scsi SCSI和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 第三方应用程序
/proc proc文件
/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/include C程序的头文件
/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)
FAT32 32位文件分配表文件系统(Microsoft Windows)
HFS+ 层次式文件系统(Macintosh)
ISO 9660 ISO 9660 标准文件系统(CD-ROM)
NTFS NT文件系统(Microsoft Windows)
UDF 通用磁盘格式文件系统(可重写CD和DVD)
UFS2 Unix文件系统(BSD、Solaris)
网络文件系统
NFS 网络文件系统(广泛使用)
SMB 服务器信息块(Windows 网络)
特殊用途文件系统
devpts 伪终端的设备界面(PTY)
procfs proc文件系统
sysfs 系统数据文件系统(设备与驱动器)
tmpfs 临时存储文件系统






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





转贴请保留以下链接

本人blog地址

http://su1216.iteye.com/

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

你可能感兴趣的:(linux,unix,shell,Microsoft,hierarchy,文本编辑)