学习笔记,内容基础,适合初学者。
阅读之前,请务必花30秒查看前言说明(在第一、二章前面部分)
《Unix & Linux 大学教程》 - 第一、二章 学习笔记 Unix简介 & 什么是Linux?什么是Unix
第二十三章:Unix文件系统
文件类型
普通文件(ordinary file)(常规文件,regular file)
目录(文件夹)
伪文件:不用来存储数据,所以不占用空间
3种最重要的伪文件
特殊文件(设备文件):是物理设备的内部表示,Unix所有特殊文件存放在/dev(device,设备)目录中
命名管道:将一个程序的输出连接到另一个程序上
proc文件:允许访问内核信息。特定情况下,可以通过它修改内核数据
硬件 | ||||||||||||||||
|
||||||||||||||||
终端 | ||||||||||||||||
|
||||||||||||||||
伪设备 | ||||||||||||||||
|
软盘与打印机是用数字编号,从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 mode] pipe
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:游戏、娱乐、教育程序
通用程序(可以由任何人使用) | ||||||
|
||||||
系统管理程序(只能由超级用户使用) | ||||||
|
||||||
第三方应用程序 | ||||||
|
/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
基于磁盘的文件系统 | ||||||||||||||||
|
||||||||||||||||
网络文件系统 | ||||||||||||||||
|
||||||||||||||||
特殊用途文件系统 | ||||||||||||||||
|
Filesystem Hierarchy Standard(FHS):文件系统层次结构标准
转贴请保留以下链接
本人blog地址
http://su1216.iteye.com/
http://blog.csdn.net/su1216/