欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-16 12:21:57
...

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

 

阅读之前,请务必花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 & Linux 大学教程》 - 附录F 时区与24小时制时间

 

 

第二十三章: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/