1 / 26

目录管理 : 路径名

目录管理 : 路径名. (1) 绝对路径名与相对路径名 (2) 当前工作目录 当前工作目录 : 进程属性的一部分 DOS: 每个逻辑盘都对应一个当前工作目录 (3) 文件 . 与 .. 在目录表中确实有两个文件 这两个目录项由系统创建和删除 (4) 主目录 (Home Directory): 每个用户都对应一个主目录 用 env 命令查环境变量 HOME 的值. 目录管理 :pwd 与 cd. 打印当前工作目录 pwd print working directory cd 改变当前工作目录 (Change Directory)

eunice
Download Presentation

目录管理 : 路径名

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 目录管理:路径名 (1)绝对路径名与相对路径名 (2)当前工作目录 当前工作目录:进程属性的一部分 DOS:每个逻辑盘都对应一个当前工作目录 (3)文件.与.. 在目录表中确实有两个文件 这两个目录项由系统创建和删除 (4)主目录(Home Directory): 每个用户都对应一个主目录 用env命令查环境变量HOME的值

  2. 目录管理:pwd与cd 打印当前工作目录pwd print working directory cd 改变当前工作目录(Change Directory) 例:cd /usr/include cd / 斜线前必须有空格 cd .. cd cd 无实参: 在DOS中,打印当前工作目录 在UNIX中,回到用户的主目录 注:cd是shell的一个内部命令

  3. 创建/删除目录mkdir/rmdir 创建目录mkdir 例:mkdir sun/work1.d mkdir除创建目录外,还在所创建的目录中自动建立文件.与.. 删除目录rmdir 例 : rmdir sun/workl.d 要求被删除的目录除.与..外无其它文件或目录 另: rm -r sun/workl.d

  4. 复制目录copy 命令格式:copy dir1 dir2 (1) 若dir2不存在,则新建子目录 并将dir1下所有文件拷入 (2) 若已存在,则将所有文件拷入 命令选项: -r 递归(Recusion)地复制遇到的子目录 -v 冗长(verbose)方式, 拷贝时列出所拷贝的文件名 例: copy backup.d bak.d copy -rv backup.d ../work1/work2.d

  5. 根文件系统与子文件系统 • 根文件系统(root filesystem) • 根文件系统是整个文件系统的基础,不能 “脱卸(umount)” • 子文件系统 • 子文件系统(包括硬盘/软盘/网络文件系统NFS)以根文件系统中某一子目录的身份出现,不象DOS那样使用逻辑盘的概念 • 独立的存储结构 • 根文件系统和子文件系统都有其自己独立的文件系统存储结构 • 例:使软盘A的文件系统与/mnt目录关联/不关联 • mount /dev/fd0135ds18 /mnt • umount /dev/fd0135ds18

  6. 文件系统的结构 把整个逻辑设备以512字节为块划分, 编号为0,1,2,...。 1.引导块(0号块): 用于启动系统,只有根文件系统的引导块有效 2.专用块(1号块):也叫管理块 存放与整个文件系统的管理有关的信息。如:文件系统的大小,i节点区的大小,空闲空间大小,空闲块链表的头等等。可以用ustat系统调用获得专用块中的某些信息。

  7. 文件系统的结构(续) • 3.i节点区: • i节点(index node,简记为i-node) • i节点区由若干块构成。 • 每个文件都对应一个i节点。 • 每磁盘块可容多个i节点,每个i节点为64字节 • i节点包括:文件类型,属主,组,权限,link数,大小,最近访问和修改的时间,指向文件实际数据块的一些指针。注:i节点内不含文件名 • i节点的数目:在文件系统创建时确定 • i节点编号:从1开始。1,2,3,... • 4.文件存储区: • 用于存放文件数据的区域,包括目录表

  8. 目录存储结构 • 树形带交叉勾连的目录结构 • 每个目录表也是一个文件 • 存于“文件存储区”中,有其自己的i节点 • 用ls命令列出的目录大小是目录表本身的长度 • 目录表的基本组成单位是“目录项” • 每个目录项由“文件名-i节点号”对构成

  9. 目录存储结构(示意图)

  10. 显示文件系统空闲空间df -v 列出文件存储区总长度,空闲空间和百分比 -i 列出i节点使用情况 UNIX文件系统至少有15%空闲空间,否则系统变得很慢 root[66]#df / (/dev/root ): 710734 blocks 150779 i-nodes /stand (/dev/boot ): 14556 blocks 3824 i-nodes root[67]#df -v Mount Dir Filesystem blocks used free %used / /dev/root 1612078 901344 710734 56% /stand /dev/boot 30720 16164 14556 53% root[68]#df -i Mount Dir Filesystem iused ifree itotal %iused / /dev/root 50733 150779 201512 26% /stand /dev/boot 16 3824 3840 1% root[69]#df -vi Mount Dir Filesystem blocks used free %used iused ifree %iused / /dev/root 1612078 901344 710734 56% 50733 150779 26% /stand /dev/boot 30720 16164 14556 53% 16 3824 1%

  11. 列出目录占用的空间du 命令du: disk usage 显示某一目录(包括所有下属子目录)中文件大小 例: du . 204 ./x25pkg 1946 ./bak/org 2602 ./bak/ver.1 2816 ./bak/ver.2 9310 ./bak 1950 ./src 11466 .

  12. 列出用户占用的空间quot 命令quot 列出用户磁盘文件所占用的磁盘空间总和 例如:quot /dev/root: 624432 bin 213700 root 5390 uucp 4012 mmdf 1029 jiang 679 gao 6 guest

  13. 文件的硬连接 目录表由目录项构成,目录项就是一个 “文件名-i节点号”对。因此,可以在同一目录或者不同目录中的两个目录项,有相同的i节点号 每个目录项指定的文件名-i节点号的映射关系,叫做硬连接 硬连接数目(link数):同一i节点被目录项引用的次数

  14. 建立文件的硬连接 • 命令ln (link) • 例:ln chapt0 intro • chapt0是一个已存在的文件,新生成目录项intro • % ls -l chapt0 intro • -rw-rw-rw- 2 kc kermit 17935 Dec 12 18:07 chapt0 • -rw-rw-rw- 2 kc kermit 17935 Dec 12 18:07 intro 前面的几项必相同,从同一i节点提取的数据 • % ls -i chapt0 intro • 13210 chapt8 • 13210 intro • 当chapt0与intro同时存在时,两者地位完全平等 • rm删除chapt0文件,则intro仍存在,但link数减1 • 用ln建立硬连接,只限于文件,并且处于同一文件系统

  15. 目录表的硬连接 • 不允许对目录用ln命令建立硬连接 • 一般来说,目录的link数=直属子目录数+2

  16. 目录表的硬连接(续)

  17. 符号连接 • 符号连接也叫软连接 • 用特殊文件“符号连接文件”来实现 • 该文件中仅包括了一个路径名 • 命令ln -s和ls -l • 例:命令ln -s users_on sym.link,创建符号连接 • 用ls -l sym.link列出 • lrwxrwxrwx 1 guest other 8 Jul 26 16:57 sym.link->users_on • 文件类型为l,大小为8字节 • 文件中只存放了users_on字符串 • 文件的最后一次写时间以后不再变化 • 一旦建立了符号连接,只有删除操作删除的是符号连接文件,其它所有操作都将访问符号连接所引用的文件,而不是符号连接文件本身

  18. 符号连接的实现

  19. 符号连接的规则 在系统翻译一个路径名分量时,若系统发现符号连接,就把符号连接的内容加到路径名的剩余部分的前面,翻译这个名字产生结果路径名。若符号连接包含绝对路径名,使用绝对路径名。否则,根据在文件层次结构中该连接的相对位置,计算符号连接内容(不是根据调用进程的当前的工作目录)。 例:设当前目录为d ln -s d1/dlb d1/dx 那么,在d1下新建文件dx,访问d1/dx则实际访问d1/d1/d1b

  20. 硬连接与符号连接的比较 硬连接 在数据结构层次上实现 只适用于文件,不适用于目录 不同文件系统之间也不行 硬连接能够完成的功能软连接可以做到 符号连接 在算法软件上实现 硬连接能够完成的功能软连接可以做到 适用于目录,也适用于不同的文件系统 但同硬连接相比要占用操作系统内核的一部分开销 避免循环式符号连接的方法

  21. 系统调用stat/fstat 用于从一个i节点获得文件的状态信息 stat用给出的路径名从磁盘寻找指定文件的i节点 fstat用给出的已打开文件句柄从核心活动i节点表中寻找 stat和fstat将数据放入调用者提供的stat结构中 #include <sys/types.h> #include <sys/stat.h> int stat(path,sbuf) /* get file status */ char *path; /* path name */ struct stat *sbuf; /* status information */ /* return O on success or -1 on error */ int fstat(fd,sbuf) /* get file sttus */ int fd; /* file descriptor */ struct stat *sbnf; /* returns O on success or -1 on error */

  22. 数据结构stat struct stat { dev_t st_dev; // 包含i节点的设备的设备号 ino_t st_ino; // i节点号 mode_t st_mode; // 文件方式,总共16比特 nlink_t st_nlink;// link数(short型) uid_t st_uid; // 文件主ID gid_t st_gid; // 用户组ID dev_t st_rdev; // 设备文件的设备号 off_t st_size; // 文件大小(字节数) time_t st_atime;// 最近读访问时间 time_t st_mtime;// 最近修改时间 time_t st_ctime;// 文件最近状态改变时间 };

  23. 数据结构stat(续) st_mode域:16比特 文件的基本存取权限和SUID/SGID权限(共11比特) 文件的类型(若干比特)。 <sys/stat.h>中的宏,用于判断文件的权限和类型 判断文件类型的方法:判 st_mode & S_IFMT: S_IFREG 普通磁盘文件 S_IFDIR 目录文件 S_IFCHR 字符设备文件 S_IFIFO 管道文件 S_IFLNK 符号连接文件 st_ctime域:文件最近状态改变时间。 向文件中写、改变权限、文件主、用户组、连接计数时,更新这个时间

  24. 文件的权限 • 权限用于控制进程对系统中文件和目录的访问: • 权限的三个级别: • 文件主,同组用户,其他用户 • 每个文件有唯一的属主 • 普通文件的权限 • 读、写、可执行,不可写文件也可以被删除 • 可执行文件:分两类: • 程序文件:二进制的CPU指令集合 • 文件满足系统规定的格式 • 脚本文件:ASCII文件 • 默认的解释程序为/bin/sh • 可以在文件的第一行自行指定解释程序 • #! /bin/csh • 解释程序也可以是用户自己编写的应用程序

  25. 目录的权限 读权限: 若无读权限,那么“目录表”文件不许读,ls会失败 写权限: 若无写权限,那么“目录表”文件不许写 创建文件,删除文件,文件改名会修改目录文件 但是,修改文件不需要修改目录文件,需要修改i节点 目录无写权限不是指目录下所有文件禁止写 执行权限: 有执行权限意味着在分析路径名的过程中可检索该目录 举例: cat /a/b/c 要求/,/a, /a/b三目录有x权限,c文件有读权限;否则,命令执行失败。 cd ../stud4628 要求..和stud4628必须有x权限

  26. 权限验证的顺序 1.若文件主与进程主相同: 使用文件主权限,不再查组和其他用户的权限 2.若文件主与进程主不同,但文件主与进程主同组: 只使用组权限,不使用关于其他用户的权限 3.若文件主与进程主不同,文件主与进程主又不同组: 使用文件关于其他用户的权限。 注:超级用户root不受权限的限制。 例:可以把文件许可权置为文件主不可读但同组用户可读,即使文件主是该组用户之一也不行

More Related