7 unix文件管理

合集下载

UNIX操作系统的文件管理

UNIX操作系统的文件管理
UNIX操作系统的文件管理
一、UNIX文件系统的基本工作原理


1、UNIX文件的逻辑结构及分类 UNIX 系统中文件的逻辑结构采用所谓无结构的 流式文件,即是把文件视为一个无内部结构的字 符流。,并把它们分为: (1) 一般文件 (2) 目录文件
由文件的目录组成的文件称为目录文件。
在 UNIX 里,为了加快文件目录的搜索速度, 便于实施文件共享,而把这些内容划分为两部 分: 一部分称为该文件的文件控制块(或索引节点) inode ,它包含了文件的长度、物理位置、文 件组、文件类型、存取权限、共享信息、管理 住处等内容; 另一部分仍称为该文件的目录,它只含文件名以 及 相 应 inode 节 点 的 编 号 ( 见 图 ) 。 因 此 , UNIX 的目录文件虽也是由文件的目录组成, 但相比之下要比通常所说的目录文件简单许多。

UNIX 在树型结构的基础上增加交叉连接部分, 以达到文件共享的目的。在 UNIX 系统中,是通 过文件的 inode 节点来实现文件共享勾连的,并 且只允许勾连到代表一般文件的叶节点上去。由 图18可知,wang和lee共享文件f2。
二、UNIX文件系统的数据结构综述


在UNIX文件系统的实施过程中,涉及到多种数 据结构。有一类数据结构用于对文件的静态管理, 因此都分布在文件所在的存储设备上,它们包括 外存文件控制块inode、目录,以及存储资源管 理信息块filsys三种; 另一类数据结构用于文件打开时的管理,因此都 出现在内存,它们包括内存文件控制块inode、 打开文件控制块file、以及进程打开文件表三种。


(3) 文件目录中的勾连

为了实现文件共享,UNIX允许对一般文件节点 实行交叉连接,这称为勾连。它是通过在同一 文件系统中的两个不同目录项里填入同一个外 存inode节点编号来实现的,图9-25中的虚线处 反映的正是这种勾连。譬如说,一般文件的原 有路径名为 /a31 ,则在目录文件中就应有一目 录项,其文件名为 a31 ,对应的外存 inode 编号 为n。如果再给它另起一个路径名/a0/bx31,则 在目录文件a0中应该新设置一个目录项,它的 文件名部分填入 bx31 ,它的外存 inode 编号仍 填为n。另外,在编号为n的外存inode里,将inlink 的值加 1 。于是文件系统中就有两个目录 项同时指向这一个inode ,实现了对文件a31的 不同名共享。

UNIX系统文件管理分析

UNIX系统文件管理分析
返回本章首页
6.1.1 文件与文件系统的概念
1.文件的定义 文件是具有标识符(文件名)的一组相关信息的 集合。标识符是用来标识文件的。不同的系统对 标识符的规定有所不同。文件的确切定义有两种 说法: (1)文件是具有标识符的相关字符流的集合。 (2)文件是具有标识符的相关记录的集合。
下一页
2.文件系统的定义 文件系统是操作系统中负责存取和管理文件信息 的机构。它由管理文件所需的数据结构(如文件 控制块,存储分配表等)和相应的管理软件以及 访问文件的一组操作组成。
返回本节
6.1.2 文件的分类、属性及文件系统的功能 1.文件的分类 2.文件的属性 3.文件系统的功能
下一页
1.文件的分类 按文件的用途分类可分为以下三类。 (1)系统 文件。 (2)用户文件 (3)库文件。 按文件中的数据形式分类 (1)源文件。 (2)目标文件。 (3)可执行文 件。
下一页
返回本节
6.2 文件的逻辑结构
6.2.1 逻辑结构 6.2.2 存取方法
返回本章首页
6.2.1 逻辑结构
1.有结构的文件 有结构的文件是指由若干个相关的记录构成的文 件,又称记录式文件。 2.无结构文件 无结构文件又称流式文件,组成流式文件的基本 信息单位是字节或字,其长度是文件中所含字节 的数目,如大量的源程序,库函数等采用的就是 流式结构。
返回本节
6.2.2 存取方法
(1)顺序存取。顺序存取是最简单的方法。它 严格按照文件信息单位排列的顺序依次存取,后 一次存取总是在前一次存取的基础上进行,所以 不必给出具体的存取位置。 (2)随机存取。随机存取又称直接存取,在存 取时必须先确定进行存取时的起始位置(如记录 号、字符序号等)。
返回本节

UNIX文件操作

UNIX文件操作

关于本系列通常,UNIX®管理员都拥有一套常用的辅助进程管理的关键实用工具、诀窍和系统。

本文提供了各种用于简化各个过程的关键实用工具、命令行链和脚本。

这些工具中的一部分来自于操作系统,而大部分的诀窍则来源于长期的经验积累和减轻系统管理员的工作压力的要求。

本系列文章主要专注于最大限度地利用各种UNIX 环境中可用的工具,包括简化异类环境中的管理任务的方法。

使用 cp如果您使用 -r 命令行选项递归到其子目录中,标准的 cp 命令可用于复制整个目录树。

该选项将对非标准的文件执行未知的操作。

有些 UNIX 变种和 GNU cp 工具支持 -R 选项,使用该选项可以正确地复制命名管道、链接和其他的文件。

对于最简单的应用,cp 命令可以将目录复制到具有不同名称的新目录(请参见清单 1)。

然而,当在 cp 命令中指定源文件和目标位置时,您应该加以小心,因为其处理方式可能对结果有很大的影响。

例如,假设您希望将目录 /home/mc 复制到目录/export/home/mc。

如果 /export/home/mc 不存在,那么清单 2会将目录/home/mc 复制到 /export/home/mc。

然而,如果 /export/home/mc 已经存在,那么清单 2会将目录 /home/mc 复制到这个目录中,并创建新的目录 /export/home/mc/mc。

要将一个目录中的内容复制到一个已有的目录中,可以选择源目录中的文件,如清单 3所示。

cp 工具有一个非常有用的选项,-p 命令行选项,它还可以确保维持每个文件的权限和所有权。

使用 tartar 命令最初用来将文件归档到磁带(确切地说,是磁带驱动器)。

例如,您可以使用清单 4中的命令,将当前目录中的文件复制到磁带上。

清单 4. 使用 tar 将当前目录中的文件复制到磁带可以对清单 4进行如下分析:c 选项创建一个新的存档。

f 选项使用命令行中的下一个选项作为目标名称。

第6章Unix文件管理共29页

第6章Unix文件管理共29页

成组链接法
第一组3 51~449 共99块 第二组251~350 共100块 第三组151~250 共100块 苇四组 51~150 共l00块 第五组 12~50 共39块
即从后面块向前分组,每组100块,但第一组为9 9块,最后的第五组不足100块,也成一组。第一 组的空闲盘块的物理块号及块数登记在第二组的 第一块中,第二组的空闲盘块物号及块数登记在 第三组的第一块
2. 磁盘文件卷结构
Sector #
0 Boot Record
1 Super Block
inode Table
Data (File & Directory)
Volume Structure in UNIX
• 超级块:描述文件系统的状态,包括磁盘空闲块栈, 空闲i结点栈
• i节点(inode list):存放文件说明信息,每项64字 节
time_t di_ctime; /*文件最近一次创建时间*/
};
3. 空闲i结点的分配和释放
• 2.系统打开文件表
一个文件可以被同一进程或不同进程,用同一或不同路径名,
相同或不同的打开方式(读、写)同时打开。
系统打开文件表
struct file {
unsigned short f_flags; /* 文件操作标志 */
4. 磁盘空闲块的分配和释放
Super Block
count 41 0 350 ... 40 187
#350 count 50
0 400
...
49 351
#400 count 50
0 450
...
49 401
Last One ... count 46
00 ...

unix文件系统

unix文件系统

Unix文件系统一、文件Unix文件是以字节序列组成的信息载体,内核不解释文件的内容。

很多编程的库函数实现了更高级的抽象。

从用户的角度来看,文件被组织在一个树结构的命名空间中。

并且大多数文件系统对文件名的长度都有限制,通常不能超过255个字符。

在同一个目录中的文件名不能相同,而在不同的目录中的文件可以相同。

Unix的每个进程都有一个当前工作目录,它属于进程执行上下文,标识出进程所用的当前目录。

为了标识一个特定的文件,进程使用路径名,路径名有斜杠及一列指向文件的目录名交替组成。

如果路径的第一个字符是斜杠,那么这个路径就是所谓的绝对路径,因为它的起点是根目录。

二、硬链接和软链接包含在目录中的文件名就是一个文件的硬链接,或简称链接。

在同一个目录或不同目录中,同一个文件可以有几个链接,因此对应几个文件名。

硬链接有两方面的限制:1、不允许用户给目录创建硬链接,因为这可能把目录树变为环形图,从而就不可能通过名字定位一个文件;2、只有在同一个文件系统中才能创建链接。

为了克服硬链接的限制,操作系统引入了软连接的概念,也称符号链接。

符号链接是短文件,这些文件包含有另一个文件的任意路径名。

路径名可以指向位于任意一个文件系统的任意文件或目录,甚至可以指向一个不存在的文件。

三、文件类型Unix系统中包含以下几种文件类型:1、普通文件(‘’)2、目录(‘d’)3、符号链接(‘l’)4、面向块的设备文件(‘b’)5、面向字符的设备文件(‘c’)6、管道和命名管道(‘p’)7、套接字(‘s’)四、访问权限和文件模式文件的潜在用户可分为:1、所有者2、同组用户,不包含所有者3、其他用户每个文件包含三种不同的访问权限(读4、写2、执行1),因此每个文件的访问权限的组合就用九种不同的二进制来标记。

还有三种附加的标记:suid、sgid、sticky1、Suid进程执行一个文件时通常保持进程拥有者的UID,然而,如果设置了可执行文件suid的标志位,进程获得该文件的UID。

unix教程

unix教程

unix教程UNIX是一种操作系统,它是在1960年代末和1970年代初由AT&T Bell实验室的Ken Thompson、Dennis Ritchie和其他人开发出来的。

作为第一个使用C语言编写的操作系统,UNIX 在计算机界产生了深远的影响,并成为许多操作系统的基础。

本教程将介绍UNIX的基础知识和常用命令,帮助读者快速上手使用UNIX系统。

首先,让我们了解一下UNIX的特点。

UNIX是一个多用户、多任务的操作系统,可以同时运行多个程序,并为不同的用户提供独立的工作环境。

它的设计理念是简单而优雅,强调模块化和可重用性。

此外,UNIX还提供了强大的处理文本和文件的能力,使其成为程序员和系统管理员的首选操作系统。

在UNIX中,用户可以通过终端(Terminal)与系统交互。

终端是一个类似于命令提示符的界面,用户可以在其中输入命令并接收系统输出。

下面是一些常用的UNIX命令和它们的简单介绍:1. ls: 列出当前目录下的文件和子目录。

2. cd: 切换到指定目录。

3. mkdir: 创建一个新目录。

4. rm: 删除指定文件或目录。

5. cp: 复制文件或目录。

6. mv: 移动文件或目录。

7. cat: 合并文件内容并输出到标准输出。

8. grep: 在文件中搜索指定的模式。

9. chmod: 修改文件权限。

10. chown: 修改文件所有者。

11. ps: 列出当前运行的进程。

12. kill: 终止指定的进程。

除了以上列举的命令外,UNIX还提供了许多其他有用的命令和工具,如sed、awk、find等,它们可以帮助用户处理和管理文件、文本和数据。

此外,UNIX还有一些常用的概念和约定,对于初学者来说可能会有些困惑。

例如,UNIX使用斜杠(/)作为目录的分隔符,而不是Windows中的反斜杠(\)。

另外,UNIX中的文件和目录名称是区分大小写的,例如"file.txt"和"File.txt"是不同的文件。

第07章 UNIX文件管理系统

第07章 UNIX文件管理系统

2)文件系统安装与拆卸 安装文件系统命令mount mount [option] filesystem mountpoint 说明: option可取:
-h -----输出该命令帮助信息 -V-----输出该命令版本号 -a -----按fstab文件所指位置安装所有文件系统 -F-----为设备生成一个安装点 -r-----安装的只读文件 -w----安装文件可读可写
卸载文件系统umount umount[option] filesystem option可取:
-a-----对所有在/etc/mtab中描述的文件卸载 -h-----输出帮助信息并退出 -n-----卸载时不写/etc/mtab -r-----当卸载失败时,重装成只读文件系统 -V-----输出umount版本号
• 不同用户的不同级别共享 • 父子进程对文件的共享 • 文件的链接共享 使用硬链接及符号链接的命令: % lnabc.c xyz.c % ln-s xyz.c def.c (查看结构) • 通过管道线的文件共享 管道文件的大小限定及访问特性
硬连接及符号链接原理图
返回
有关文件处理的系统调用
1.文件描述符 高级语言中的输入/输出库函数是对FILE类型的指针操 作,c语言处理中自动打开stdin,stdout,stderr三个文 件。 系统调用中用一个整形数描述打开的文件,它就是文 件描述符。
1)检索当前目录的索引节点 2)通过当前目录找到当前目录文件查 出..节点 3)检索..索引节点 4)通过..文件找到..文件查出a的索引节 点号 5)检索a的索引节点号 6)找到a的目录文件,查出b的索引节点 号 7)检索b,找到b的文件位置 8)访问文件b
3.文件共享的实现及应用 UNIX中有多种文件共享方式:

UNIX操作系统的文件管理

UNIX操作系统的文件管理





(1) i-count 内存inode访问计数。若为0,表示此节点为空闲, 某文件被打开时,其内存inode里的此项就加1。 只有所有用户都关闭了此文件,以使i-count为0 后,这个文件才被真正关闭。 (2) i-number 与此内存inode相对应的外存inode编号。
5、打开文件控制块file和file表
文件系统磁盘存储区的分布图




每一个文件的inode节点占用32个字节,因此每一个inode 块包含16个文件控制块。这些inode顺序编号,一个文件 占用了某inode,则其编号就成为这个文件的内部标识, 第1号inode是专门用于根目录文件的。 数据结构filsys 共有12 项内容,下面给出与我们讲述有关 的六项。 (1) s-isize inode区占用的盘块数; (2) s-fsize 盘块总数; (3) s-nfree 直接管理(也就是s-free[100]指向)的空闲块 数; (4) s-free[100] 空闲块索引表 (5) s-ninode 直接管理的空闲inode节点数; (6) s-sinode[100] 空闲inode节点索引表。 至于如何通过filsys来对空闲inode和空闲盘进行具体管理, 详情见后面关于UNIX文件系统资源管理综述部分。

4外node记录了一个文件的属性和有关信息。可以想象,在对某一
文件的访问过程中,会频繁地涉及到它,于是它就要不断来回于内、 外存之间,这当然是极不经济的。为此,UNIX在系统占用的内存区 里开辟了一张表——内存inode表(或活动文件控制块表、活动索引 节点表),该表共有100个表目,每个表目称为一个内存文件控制块 inode,当需要使用某文件的信息,而在内存inode 表中找不到其相 应的inode时,就申请一个内存inode,把外存inode的大部分内存拷 贝到这个内存inode 中,随之就使用这个内存 inode 来控制磁盘上的 文件。在最后一个用户关闭此文件后,内存inode的内容被写到外存 inode,然后释放以供它用。 内存inode的结构基本上与外存inode相同。增加的有关项目有:

UNIX_文件组织及管理

UNIX_文件组织及管理

文件组织及管理1.文件及文件系统的定义一个文件是数据的集合体,而文件系统是文件和目录的集合,它通常是按磁盘划分的。

一个文件一定属于一个文件系统,一个文件系统一定对应着相应磁盘,这个磁盘可以是一块物理硬盘的一部分,也可以是单独的一块物理硬盘,还可以是几块物理硬盘绑定,文件系统的分配是随需要而改变的,但系统一旦生成这种结构就相对比较稳定。

e10k:[wqwq]% df/ (/dev/dsk/c2t0d0s0 ): 1278512 blocks 409350 files/proc (/proc ): 0 blocks 29669 files/dev/fd (fd ): 0 blocks 0 files/etc/mnttab (mnttab ): 0 blocks 0 files/var/run (swap ):120999056 blocks 3510504 files/tmp (swap ):120999056 blocks 3510504 files/e10kstg1 (/dev/vx/dsk/e45h72g3/vol11):240940306 blocks 43885850 files /e10kstg4 (/dev/vx/dsk/data7/vol01):92213514 blocks 35106439 files/e10kstg5 (/dev/vx/dsk/D72G1/vol01):118222520 blocks 52666174 files/e10kstg6 (/dev/vx/dsk/e4500stg3/vol01):47745344 blocks 41827853 files /e10kstg7 (/dev/vx/dsk/s5x70r0/vol01):71443464 blocks 167976366 files/e10kstg8 (/dev/dsk/c10t5d1s2):83633238 blocks 43203816 files/e10kstg9 (/dev/dsk/c10t5d0s2):99615724 blocks 126671090 files/e10kscr1 (/dev/vx/dsk/data/vol01):124206748 blocks 33122700 files/e10kstg11 (/dev/vx/dsk/180gbox2/vol01):697790498 blocks 130245996 files /e10kstg10 (/dev/vx/dsk/180gbox1/vol01):502430666 blocks 130244919 files /e10kscr6 (/dev/vx/dsk/idata1/vol01):266543860 blocks 82859747 files/e10kscr3 (/dev/vx/dsk/data2/vol01):181851556 blocks 11906886 files/e10kscr2 (/dev/vx/dsk/d18x13sgi/vol01):209909370 blocks 13055889 files /e10kscr7 (/dev/vx/dsk/d18x13sgi/vol02):212880002 blocks 15236193 files e10k:[wqwq]%2.文件系统类型2.1磁盘文件系统三种磁盘文件系统类型:ufs– UNIX文件系统。

文 件 管 理

文 件 管 理

2)
空闲盘块的回收是由free过程完成的。在回收空闲盘块时,首先检查超级 块中的盘块号栈是否已经上锁, 若已上锁,便调用sleep睡眠;否则, 再 检查空闲盘块号栈是否已满。如果空闲盘块号栈未满,可直接将回收盘块 的编号记入空闲盘块号栈中;若栈已满,须调用betblk过程申请一个缓冲 区, 将栈中的所有空闲盘块号复制到新回收的盘块中,再将新回收盘块 的编号作为新栈的栈底块号进栈。
第k个内 存索引结 点

第E
三 种
用 户
fp
情 况
F 用
户 fp

f_o ffest f_i no de
f_o ffest f_i no de

第l个内 存索引结 点
图 9-18 对文件的三种读/写方式
(2) falloc过程
该过程的功能是分配文件表项。进入falloc过程后,调用ufalloc过程分 配用户文件描述表项。若未分配成功,便返回NULL; 否则,继续从文件 表中查找一个空闲文件表项若找到空闲文件表项,便将该项的始址置入用 户文件描述符表项中。在设置文件描述表表项的初始值后便返回(fp)。 若 未找到空闲文件表表项, 则返回NULL。
Wan g
dev 的 目 录 表
i
Wan g letter test
i test rep ort
i
图 9-16 UNIX文件系统的结构
3.
当文件处于“未打开”状态时, 文件需占用三种资源: (1) 一个目录项。 (2) 一个磁盘索引结点项。 (3) 若干个盘块。 当文件被引用或“打开”时,
(1) 一个内存索引结点项。
超 级块 表 109 106 103 100 95
211 208 205 202

unix下的文件和目录详解以及操作方法

unix下的文件和目录详解以及操作方法

unix下的⽂件和⽬录详解以及操作⽅法前⾔:unix下⼀切东西都是⽂件,⼀共有7种不同的⽂件,前⼀篇博客已经讲解的很清楚了,不懂的可以看看。

当然,博主知道有些朋友⽐忙,没时间看,那我就简单点讲讲这7种⽂件都有哪些吧。

⽂件类型包括在stat结构的st_mode成员中,下⾯是这7种⽂件类型的判断⽅法:宏⽂件类型S_ISREG(m) 普通⽂件(is it a regular file?)S_ISDIR(m) ⽬录⽂件(directory?)S_ISCHR(m) 字符特殊⽂件(character device?)S_ISBLK(m) 块特殊⽂件(block device?)S_ISFIFO(m) 管道或FIFO [FIFO (named pipe)?]S_ISLNK(m) 符号链接 [symbolic link? (Not in POSIX.1-1996.)]S_ISSOCK(m) 套接字 [socket? (Not in POSIX.1-1996.)]当然这些⽂件都是有访问权限的,很巧这些权限也是在⼀个叫struct stat这个结构体中结构体struct stat中的成员st_mode值包含了对⽂件的访问权限位,任何类型的⽂件都有访问权限(access permission)。

每个⽂件有9个访问权限,可以它们分为3类,u表⽰⽤户(所有者)、g表⽰组、o表⽰其他st_mode屏蔽含义S_IRUSR ⽤户读S_IWUSR ⽤户写S_IXUSR ⽤户执⾏S_IRGRP 组读S_IWGRP 组写S_IXGRP 组执⾏S_IROTH 其他读S_IWOTH 其他写S_ICOTH 其他执⾏那么问题来了既然有权限,我们怎么知道这些权限呢?当然这不是难事,⼀个access函数就可以解决问题了函数描述:按实际⽤户ID和实际组ID进⾏访问权限测试(1)头⽂件#include <unistd.h>(2)函数原型int access(const char *path, int amode);(3)参数a、path:⽂件路径b、amode:F_OK:测试⽂件是否存在R_OK:测试⽂件是否可读W_OK:测试⽂件是否可写X_OK:测试⽂件是否可执⾏(4)返回值成功:0失败:-1函数描述:为进程设置⽂件模式创建屏蔽字,并返回之前的值(1)头⽂件: #include <sys/stat.h>(2)函数原型: mode_t umask(mode_t cmask);(3)参数:cmask:(下⾯9个常量中的若⼲个按位或构成),例如:S_IRUSR|S_IRGRP //权限就为⽤户读和组读st_mode 屏蔽 含义 S_IRUSR ⽤户读 S_IWUSR ⽤户写 S_IXUSR ⽤户执⾏这是access 函数的具体⽤法的代码(argv[1]必须是⼀个已经存在的⽂件):#include <stdio.h>#include <unistd.h>#include <stdlib.h>int main(int argc,char **argv){if (argc != 2) {printf("argc must equal to two!\n"); exit(1); }if (access(argv[1],F_OK)) //判断⽂件是否存在 {printf("%s not existence!\n",argv[1]); exit(1); }if (access(argv[1],R_OK)) //判断⽂件是否可读 {printf("%s not read permission\n",argv[1]); } else {printf("%s have read permission\n",argv[1]); }if (access(argv[1],W_OK)) //判断⽂件是否可写 {printf("%s not write permission\n",argv[1]); } else {printf("%s have write permission\n",argv[1]); }if (access(argv[1],X_OK)) //判断⽂件是否可执⾏ {printf("%s not execute permission\n",argv[1]); } else {printf("%s have execute permission\n",argv[1]); } return 0;}View Code 在ubuntu下运⾏:当然了既然有权限,那么我们在创建⽂件的时候⽂件权限也是可以⾃⼰控制的,umask 函数⽤上场了S_IRGRP 组读S_IWGRP 组写S_IXGRP 组执⾏S_IROTH 其他读S_IWOTH 其他写S_ICOTH 其他执⾏(4)返回值:成功:之前的⽂件模式创建屏蔽字代码的具体⽤法如下:#include <sys/stat.h>#include <stdio.h>#include <sys/types.h>#include <fcntl.h>#include <stdlib.h>#define RRR (S_IRUSR|S_IRGRP|S_IROTH) //设置⽂件权限为⽤户读、组读、其他读int main(int argc,char *argv[]){umask(0); //不设置⽂件屏蔽字creat("text",RRR); //以⽤户读、组读、其他读的权限创建⽂件text.txt //这⾥也可以⽤openumask(S_IRUSR|S_IRGRP); //创建⽤户读、组出屏蔽字creat("text1",RRR); //最后创建出来的⽂件只有其他读的权限return0;}View Code既然⽂件可以创建,当然⽬录也是可以创建的,mkdir函数就是为创建⽬录⽽⽣的:函数描述:创建⼀个空⽬录,.和..⾃动创建(1)头⽂件#include <sys/stat.h>(2)函数原型int mkdir(const char *path, mode_t mode);(3)参数:a、path:⽂件名b、mode:是以下15种常量的按位或mode 含义S_ISUID 执⾏时设置⽤户IDS_ISGID 执⾏时设置组IDS_ISVTX 保存正⽂(粘着位)S_IRWXU ⽤户(所有者)、读、写和执⾏S_IRUSR ⽤户(所有者)读S_IWUSR ⽤户(所有者)写S_IXUSR ⽤户(所有者)执⾏S_IRWXG 组读、写和执⾏S_IRGRP 组写S_IWGRP 组读S_IXGRP 组执⾏S_IRWXO 其他读、写和执⾏S_IROTH 其他读S_IWOTH 其他写S_IXOTH 其他执⾏(4)返回值成功:0失败:-1创建⽬录的具体实现:#include <sys/stat.h>#include <stdio.h>#include <stdlib.h>#include <errno.h>int main(int argc,char *argv[]){if(mkdir("test.txt",S_IWOTH|S_IRUSR|S_IRGRP) == -1) /*以其他写、⽤户读、组读权限创建⼀个空⽬录*/{perror("mkdir");exit(1);}return0;}View Codeumask函数是在创建⽂时设置权限,那么在⽂件被创建之后还能修改权限吗?这时候chmod函数就派上⽤处了(1)头⽂件 #include <sys/stat.h>(2)函数原型 int chmod(const char *path, mode_t mode);(3)参数:a、path:⽂件路径b、mode:跟上⾯midir函数中的成员mode⼀样,其中的宏位或就可以了改变⽂件权限的例⼦:chmod("text",S_IRUSR|S_IRGRP|S_IROTH); //把text⽂件的权限改为⽤户读、组读、其他读既然权限可以改变权限,当然改个名字也是没问题的,⽤rename函数轻松解决问题:(1)头⽂件#include <stdio.h>(2)函数原型 int rename(const char *old, const char *new);(3)参数:a、old:⽂件原来的名字b、new:新的名字(4)返回值:成功:0失败:-1改变⽂件名字的例⼦:rename("text","hhtext"); //将名字为text的⽂件改为hhtext其实⽂件中还有个⼩操作就是可以在任何位置截断⽂件中的内容:truncate("test",3); //将⽂件test长度截断为3字节好了讲了那么多关于⽂件的权限的东西,是时候讲讲怎么打开⼀个⽬录和读⽬录中的的东西了:读⽬录中,要经过三步:打开⽬录、读⽬录、关闭⽬录,对应⽤到的函数分别为opendir、readdir、closedir。

UNIX文件系统常用命令

UNIX文件系统常用命令

UNIX文件系统常用命令问题:UNIX文件系统常用命令回答:UNIX命令UNIX命令举例类似DOS命令显示当前目录pwdpwdcd改变目录cdcd /usrcd c: usr进入家目录cdcd创建目录mkdirmkdir abcmd abc删除空目录rmdirrmdir abcrd abc删除目录及其内容rm -rrm -r abcdeltree abc显示目录内容lsls abc ls -l abc(文件长列表)ls -a abc(所有类型文件)ls -d * (不进子目录)dir abc显示文本文件内容catcat file1.ctype file1.c一次一屏显示文本文件内容moremore file1.c拷贝文件cpcp file1 file2copy file1 file2移动(重命名)文件mvmv call.test call.listmove call.tst call.lstren call.test bbb删除文件rmrm call.listdel call.lst一、pwd 命令pwd命令用来显示当前目录路径,命令如下:pwd二、cd命令cd命令用于改变当前的目录,如:命令举例说明cd /usr/smith 改变到/usr/smith目录cd ../wjm 改变到父目录下的wjm子目录cd exam1 改变到当前目录下的exam1子目录cd 改变到家目录不带参数的cd命令表示进入家目录,这点与DOS有本质区别。

三、rm命令rm命令可以删除文件及目录,举例如下:命令举例说明rm file2 删除当前目录下的文件file2rm file* 删除当前目录下以file开头的文件rm -r /usr/wjm/exam2 删除目录/usr/wjm/exam2及其内容四、ls命令ls命令可以显示目录内容,命令格式如下:ls -选项文件名其中的常用选项说明如下:-l 长列表显示目录内容-a 显示所有类型文件,包括隐含文件-d 如果显示内容包含目录名,则只显示目录名字不显示目录内容命令举例如下:命令举例说明ls 显示当前目录内容ls file* 显示除当前目录下以file开头的文件ls -l /usr/wjm/exam2 长列表显示目录/usr/wjm/exam2内容ls -adl 显示当前目录内容(同时带-l、-d、-a参数)[注] ”ls -l”命令显示格式如下:drwxrwxr-x 2 smith group 48 Jan 05 1998 john-rwxr-xr 1 wjm newservice 321 Oct 17 09:33 file2上面每行中:第一列:第1个字符表示文件的类型(d表示目录,-表示普通文件);第2-4字符表示文件属主对此文件的访问权限(如:“rwx”和“rwx”);第5-7字符表示用户组对此文件的访问权限(如:“rwx”和“r-x”);第8-10字符表示其他用户对此文件的访问权限(如:“r-x”和“r ”);其中,访问权限用三个字符表示,顺序是“rwx”,“r”表示可读、“w”表示可写、“x”表示可执行。

UNIX系统常用管理命令

UNIX系统常用管理命令

UNIX系统常⽤管理命令⼀. 引⾔UNIX系统作为⼀种强⼤的多⽤户分时操作系统,在越来越多的场合受到了应⽤,同时,对UNIX的系统管理的要求也随之越来越多,但⽬前的书籍对UNIX系统管理命令介绍的并不是很多。

本⽂主要是针对UNIX系统管理员,以SUN SOLARIS 2.6 系统为例,列举了⼀些UNIX常⽤的管理命令的使⽤及其使⽤中遇到的问题和解决⽅法,供⼤家参考。

⼆. 常⽤系统管理命令介绍1. share 和 mount 命令这是系统管理员常⽤的两个命令,share命令⽤于把本机的⽬录共享出来,以便其它UNIX系统可以使⽤;mount命令则⽤于把其它UNIX系统共享出来的⽬录挂接到本机的挂接点上,从⽽可以使⽤其它UNIX系统的资源。

例如:在机器A上输⼊ machineA# share -F nfs -o rw /share-dir在机器B上输⼊ machineB# mount -F nfs machineA:/share-dir /mount-point第⼀条命令把机器A的 share-dir ⽬录共享出来,并且共享的权限是可读写;第⼆条命令把机器A的共享⽬录挂接到机器B的 mount-point ⽬录上。

完成这两个命令后,⽤户在机器B上通过对mount-point的访问就可以操作机器A上的share-dir⽬录了。

但是有时我们操作时,在机器B上执⾏了mount命令后,会返回"RPC: Program not registered"这样的错误,这是因为在机器A上缺少mountd和nfsd 这两个守护进程(daemon)。

UNIX系统启动时,系统会⾃动检查/etc/dfs/dfstab⽂件,如果⽂件中有要共享的资源,则启动这两个守护进程,反之,则不启动。

所以如果我们在/etc/dfs/dfstab中没有内容,则系统不能启动mountd和nfsd这两个守护进程,⽤share命令共享的⽬录也不能真正被别的系统共享。

UNIX常用命令-目录及文件操作命令

UNIX常用命令-目录及文件操作命令

[语法]:ls [-RadCxmlnogrtucpFbqisf1] [目录或文件......][说明]:ls 命令列出指定目录下的文件,缺省目录为当前目录./,缺省输出顺序为纵向按字符顺序排列。

-R 递归地列出每个子目录的内容-a 列出所有文件,包括第一个字符为“.”的隐藏文件-d 若后面参数是目录,则只列出目录名而不列出目录内容,常与-l选项连用以显示目录状态。

-C 输出时多列显示-x 横向按字符顺序排列-m 输出按流式格式横向排列,文件名之间用逗号(,)分隔-l 长列表输出,显示文件详细信息,每行一个文件,从左至右依次是:文件存取模式链接数文件主文件组文件字节数上次修改时间其中文件存取模式用10个字母表示,从左至右的意义如下:第一个字母表示文件种类,可以是以下几种情况:d 为目录文件l 为链接b 为块文件c 为字符型文件p 为命名管道(FIFO)- 为普通文件后面9个字母分别表示文件主、同组用户、其他用户对文件的权力,用r表示可读,w 表示可写,x 表示可执行。

如果是设备文件,则在文件字节数处显示:主设备从设备。

-n 与-l选项相同,只是文件主用数字(即UID)显示,文件组用数字(即GID)表示-o 与-l选项相同,只是不显示文件组-g 与-l选项相同,只是不显示文件主-r 逆序排列-t 按时间顺序排列而非按名字-u 显示时间时使用上次访问时间而非上次修改时间-c 显示时间时使用上次修改i节点时间而非上次修改时间-p 若所列文件是目录文件,则在其后显示斜杠(/)-F 在目录文件后加’/’,在可执行文件后加’*’-b 文件名中若有非打印字符,则用八进制显示该字符-q 文件名中的打印字符用’?’表示-i 显示节点号-s 显示文件长度时使用块长度而非字节长度-f 将后面的参数解释为目录并列出其中的每一项-1 每行仅列一项[例子]:ls 列出当前目录下的文件ls -al /bin 以长列表的形式列出目录/bin 下的所有文件,包括隐藏文件[语法]: pwd[说明]:本命令用于显示当前的工作目录[例子]:pwd 显示出当前的工作目录1.3 cd[语法]: cd [目录][说明]:本命令用于改变当前的工作目录,无参数时使用环境变量$HOME 作为其参数,$HOME 一般为注册时进入的路径。

UNIX系统(二)设备、文件管理

UNIX系统(二)设备、文件管理

3、索引节点表 、
Buf主要包括以下信息: Buf主要包括以下信息: 主要包括以下信息
b_addr: b_addr:缓冲区内存地址 b_dev: 缓冲区对应的设备信息: b_dev : 缓冲区对应的设备信息 : 高字节表 示设备类号, 示设备类号,低字节表示同类设备的编号 b_blkno: b_blkno:缓冲区对应的物理块号 b_back和av_forw,av_back:链指针, b_forw, b_back和av_forw,av_back :链指针, 用于连接两个双向队列。 用于连接两个双向队列。 b_flags:标志信息,反映缓冲区的使用情况。 b_flags:标志信息,反映缓冲区的使用情况。
2、自由buf队列 自由buf队列 buf
系统把空闲缓冲区对应的buf组成空闲buf队 系统把空闲缓冲区对应的buf组成空闲buf队 buf组成空闲buf 也称为自由buf队列。 buf队列 列,也称为自由buf队列。 这个队列是双向循环链表结构。 这个队列是双向循环链表结构。 对自由buf buf队列采用先进先出的管理方案 对自由buf队列采用先进先出的管理方案 回收一个缓冲区时, 回收一个缓冲区时,将其插入队尾 分配缓冲区时, 分配缓冲区时,总是从队首摘取一个缓冲区 分配给申请者。 分配给申请者。
写操作
写是指把某个内存区的信息传到缓冲区, 写是指把某个内存区的信息传到缓冲区,然 后把缓冲区的信息写到指定的物理设备去。 后把缓冲区的信息写到指定的物理设备去。 但当一次写操作未写满缓冲区时(小于 小于512 但当一次写操作未写满缓冲区时 小于 字节),就采用延迟写,即不急于写到设备 字节 ,就采用延迟写, 去,而是把这个缓冲区的标志位置上延迟写 的标志, 的标志,表示具体写操作延迟到以后的某个 时该进行。 时该进行。

7UNIX文本编辑

7UNIX文本编辑
继续查找命令
n 向下查找下一个next N 向上查找下一个 循环式搜索
第3章 第20页
模式替换(1)
替换命令 (substitution)
格式 :n1,n2s/pattern/string/g

➢:1,50s/abc/xyz/
➢:1,50s/abc/xyz/g
➢:50,80s/^/
/ 第50-75行右移4列
命令 a
在当前字符后插入正文段,直至按Esc键(append)
命令 o
在当前行后插入正文段,直至按Esc键(open)
命令 O
在当前行前插入正文段,直至按Esc键(open)
第3章 第8页
光标单字符移动
单字符移动(四个字母键盘上相邻的按键)
h 光标左移一列 j 光标下移一行 k 光标上移一行 l 光标右移一列 有的终端可以直接使用键盘上的方向键代替这四个字母
➢:50,80s/^
// 第50-75行左移4列
➢:1,$s/ *$//
消除尾部多余的空格
➢:1,$s/a[i]/b[j]/g
不能把a[i]替换为b[j]
➢:1,$/a*b/x+y/g
第3章 第21页
模式替换(2)
替换字符串中字符&代表被模式所匹配的那部分
例 设文件当前只含有2行,每行为一个整数,内容为
存盘不退出
:w<CR>
不存盘退出
:q!<CR>
读入文件xyz.c插入到当前行之下
:r xyz.c<CR>
写文件,把第50行至文件尾的内容写到文件file1中
:50,$w file1<CR> :50,$w! file1<CR&作

UNIX系统下文件描述符参数的管理

UNIX系统下文件描述符参数的管理

UNIX系统下文件描述符参数的管理UNIX系统下文件描述符参数的管理Unix系统环境里,内核(kernel)利用文件描述符(file descriptor)来访问文件,文件描述符是由无符号整数表示的句柄。

打开现存文件或新建文件时,内核会返回一个文件描述符。

读写文件也需要使用文件描述符来指定待读写的文件。

文件描述符的有效范围是0 到OPEN_MAX。

习惯上,标准输入(standard input)的文件描述符是0,标准输出(standard output)是1,标准错误(standard error)是2。

POSIX 定义了STDIN_FILENO、STDOUT_FILENO 和STDERR_FILENO 来代替0、1、2。

这三个符号常量的定义位于头文件unistd、h。

一、什么情况下,会新建和打开文件:1、A JVM opens many files in order to read in the classes required to run your application、High volume applications can use a lot of files in many ways、2、each new socket requires a file、Clients and Servers communicate via TCP sockets、3、Each browser's http request consumes TCP sockets whena connection is established to a Server、二、文件描述符的释放:1、在文件关闭或进程终止时被关闭的。

2、如果想重用某个文件描述符,必须关闭与之关联的所有文件描述符(父进程和子进程:文件描述符可以继承,可由子进程使用)。

3、TIME_WAIT 结束时,才会释放TCP 套接字文件描述符。

(在Unix系统中, TIME_WAIT在kernel参数tcp_time_wait_interval中设置、默认值是240秒)4、打开新文件时将会重用关闭的文件描述符下面我们分别讨论一下opne_max参数的设置与监控:一、Linux系统1、查看1、使用ulimit命令查看系统允许当前用户进程打开的文件数限制:[ccb@as4~]$ulimit -n1024这表示当前用户的每个进程最多允许同时打开1024个文件。

os_ch7文件管理

os_ch7文件管理
文件硬链接 将两个文件目录表目指向同一个索引节点的链 接称为文件硬链接,文件硬链接不利于文件主 删除它拥有的文件,因为文件主要删除它拥有 的共享文件,必须首先删除(关闭)所有的硬链 接。 $ln /bin/ls /usr/lx20/dir

36
7.4.3 基于符号链接实现文件共享
符号链接 系统为共享的用户创建一个 link类型的新文件, 将这新文件登记在该用户共享目录项中,这个 link型文件包含链接文件的路径名。该类文件 在用ls命令长列表显示时,文件类型为l。 $ln -s /bin/ls /usr/lx20/dir $ls –l dir lrwxrwxrwx … dir-> /bin/ls

9
文件的组织有两种: 文件的逻辑结构: 文件的逻辑结构是指用户思维中文件的结构。 文件的物理结构: 文件的物理结构是指文件在存储介质上的结构 (或称组织)。 主要指磁盘上文件的结构。
10
7.2.1 文件逻辑结构类型
1.按文件是否有结构分类 结构文件--记录式文件。 无结构文件--流式文件
11
7.2.1 文件的逻辑结构类型
第七章 文件管理
1
主要内容
7.1 7.2 7.3 7.4 7.5

文件和文件系统 文件的逻辑结构 目录管理 文件共享 文件保护
2
7.1 文件和文件系统
7.1.1
文件、记录和数据项
3
一、文件定义 由创建者所定义的、 具有文件名的一组相关 元素的集合。 文件名是文件的标识符号。 –文件体:文件本身的信息; –文件说明:文件存储和管理信息;如:文 件名、文件内部标识、文件存储地址、访 问权限、访问时间等;

14
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2,在文件中查找
用户更多的是需要在文件中查找感兴趣的内容
grep命令:grep [options] pattern [file-list] egrep命令:egrep [options] [string] [file-list] fgrep命令:fgrep [options] [expression] [file-list] 这三个命令都是在文件中对指定的模式/字符串/表达式进行查找 如果file-list为空,则从标准输入取得输入 pattern/string/expression均可以用正则表达式(三个命令的支持程度 不同) 常用选项:
/ab*c/ /ab.*c/ /[a-z A-Z]*/ abc, abbbc, abbbbbc abxc, ab234rdfc, abc ?
加号(+)
与星号类似,表示所跟字符重复1次或者多次
特殊字符"Biblioteka "与"$"符号
"^"表示在行首匹配一个字符串 "$"表示在行尾匹配一个字符串 称为锚定 例
/^T/ /^[0-9] /:$/ 行的开始是T 行的开始是一个数字 行的结尾是一个冒号
匹配任意一个字符 有些程序使用"?"来作为匹配任意一个字符的特殊字符 例:
/.all/:表示all字符串前面加任意一个字符,例如可以是call,mall, wall…
特殊字符
方括号([])
集合匹配 匹配括号内任意一个字符 若括号内第一个字符是"^",则表示否定,即匹配不在括号内的任意 一个字符 例

注意:不同的程序,对正则表达式的支持程度不同
2,普通字符与分隔符
普通字符
除特殊字符之外的所有一般字符 当特殊字符要作为普通字符时,需要使用引用符号
分隔符
"/"号 用来分隔一个正则表达式字符串 有些程序中可以省略,还有些程序允许使用别的字符作 为分隔符
3,特殊字符
特殊字符使得正则表达式可以表示任意复杂的字符 串 点号(.)
特殊字符
小括号("()")
表示一个组合的字符串作为一个基本的正则表达式单元 例
/(xy)*/ /Oh, (la )+/ xyxy, xyxyxyxyxy, xy Oh, la la la , Oh, la la
4,转义
有的情况下,特殊字符(元字符)需要作为一个普 通字符出现在字符串中,此时就需要转义 转义的方法:"\"+所需转义的字符 \"+ 例:
-i:匹配过程中,忽略大小写 -n:显示匹配行的行号 -l:显示匹配行所在的文件名
在文件中查找
grep命令示例
$grep –n ftp *.log $grep –n [a-z]ftp *.log $grep –n [^a-z]ftp *.log $grep –in ^[a-z 0-9]ftp *.log $grep –in open.*3.9 *.log $egrep -in 'open|ftp' *.log
3,文件压缩
文件压缩技术
减小存储空间 减少复制与网络传输时间 与解压缩互为逆过程
UNIX常用压缩/解压的工具/命令
compress/uncompress:压缩/解压 gzip/gunzip:压缩/解压 tar:压缩/解压 zcat/gzcat/gzmore:显示压缩文件内容 gzcmp:比较压缩文件
文件压缩
compress命令
以自适应Lempel-Ziv编码压缩文件 命令格式:compress [options] [file-list] 压缩后的内容保存到一个与原文件同名的.Z文件中 注意:原文件将被删除 常用选项
-v:显示压缩百分比以及文件名称 -f:强行压缩(不带提示)
文件压缩
upcomress命令
第六章 高级文件处理
高级文件处理
6.1 正则表达式 6.2 查找,压缩及编解码 6.3 文件共享 6.4 文件系统与磁盘
1,什么是正则表达式
正则表达式
UNIX平台下经典的复杂字符串表示方法 定义了一套由一个或者多个字符串组成的集合 许多UNIX系统程序与应用程序(例如vi与shell本身), 都支持使用正则表达式进行字符串查找与替换
/me\./ /you\\me/ /and\/or/ me. you\me and/or
高级文件处理
6.1 正则表达式 6.2 查找,压缩及编解码 6.3 文件共享 6.4 文件系统与磁盘
1,命令查找
UNIX用户有时候需要
知道文件系统中是否存在某个特定的命令或者文件 知道命令所对应的可执行文件 命令的版本
/[bcs]old/:表示第一个字符可以是b,c或者s,即整个字符串可以是bold, cold或者sold /file[1-9].txt/:表示第四个字符可以是1到9的任意一个数字 /^a-zA-Z/:任意一个非字母字符
特殊字符
星号(*)
表示所跟字符重复0次或者多次 如果前面是点号,则可以表示一个任意的字符串 例
命令/文件的查找
find命令 whereis命令 where命令
命令查找
whereis命令
命令格式:whereis [options] [commands] 定位指定的命令所对应的可执行文件或源代码 常用选项:
-b:仅搜索二进制(可执行)文件 -s:仅搜索源代码
例:
[root@authsvr ~]# whereis ftp ftp: /usr/bin/ftp /usr/share/man/man1/ftp.1.gz [root@authsvr ~]# whereis mount mount: /bin/mount /sbin/mount.smb /sbin/mount.smbfs /sbin/mount.cifs /usr/share/man/man2/mount.2.gz /usr/share/man/man8/mount.8.gz [root@authsvr ~]#
解压缩compress压缩的文件 格式与compress一样
compress/uncompres示例
[oracle@authsvr ~]$ ls -l test.txt -rw-r--r-- 1 oracle oinstall 6994 4月 1 07:10 test.txt [oracle@authsvr ~]$ compress test.txt [oracle@authsvr ~]$ ls -l test.txt.Z -rw-r--r-- 1 oracle oinstall 2250 4月 1 07:10 test.txt.Z [oracle@authsvr ~]$ uncompress test.txt.Z [oracle@authsvr ~]$ ls -l test.txt -rw-r--r-- 1 oracle oinstall 6994 4月 1 07:10 test.txt [oracle@authsvr ~]$ compress -v test.txt test.txt: -- replaced with test.txt.Z Compression: 67.82% [oracle@authsvr ~]$
相关文档
最新文档