Linux学习笔记(4) - 文件系统
4.1 什么是文件系统
文件系统表示存储在计算机上的文件和目录的数据结构,也可以用于存储文件的分区或磁盘,操作系统通过文件系统可以方便地查询和访问其中所包含的磁盘块。在Linux系统中,每个分区都是一个文件系统,都有自己的目录层次结构。Linux最重要的特征之一就是支持多种文件系统,这样它更加灵活,并可以和许多其他操作系统共存。
- 块分配:当文件变大时,块分配每一次都为这个文件分配磁盘空间
- 扩展分配:当某个文件的磁盘空间不够时,一次性为它分配一连串连续的块
Linux文件系统使用索引节点来记录文件信息,索引节点作用类似于Windows操作系统中文件分配表。索引节点时一种数据结构,它包含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。Linux文件系统将文件索引节点号和文件名同时保存在目录中。
文件系统类型包括
- ext2 早期Linux中常用的文件系统
- ext3 ext2的升级版,带日志功能
- RAMFS 内存文件系统,速度很快
- NFS 网络文件系统,由SUN发明,主要用于远程文件共享
- MSDOS ms-dos文件系统
- VFAT Windows95/98操作系统采用的文件系统
- FAT Windows Xp操作系统采用的文件系统
- NTFS Windows NT/XP操作系统采用的文件系统
- HPFS OS/2操作系统采用的文件系统
- PROC 虚拟的进程文件系统
- ISO9660 大部分光盘用的文件系统
- ufsSun OS所用的文件系统
- HFS Macintosh机采用的文件系统
- NCPFS Novell服务器所采用的文件系统
- SMBFS Samba的共享文件系统
- XFS 由SGI开发的先进的日志文件系统,支持超大容量文件
- JFS IBM的AIX使用的日志文件系统
- ReiserFS 基于平衡树结构的文件系统
4.2 常用的文件系统
ext2、ext3、ReiserFS
4.3 Linux目录树
在Linux系统中,目录是文件系统中组织文件的形式。文件系统将文件组织在若干目录和其子目录中,最上层的目录称为根目录(Root)目录,用“/”表示,其他的所有目录都是从根目录出发而生成的。这种目录结构类似于一个导致大的树状,所以又称为“树状结构”。
4.3.1 文件系统层次结构
文件是Linux操作系统处理信息的基本单位。所有软件都组织成文件形式。
1、文件的成分
无论文件是一个程序、文档、数据库,或者是目录,操作系统都会赋予文件相同的结构:
- 索引节点:包含有关文件信息的一个记录,这些信息包括文件权限、文件主、文件大小等
- 数据:文件的实际内容,可以是空的,也可以非常大,并且有自己的结构
2、文件命名
Linux的文件名几乎可以由ASCII字符的任意组合构成,文件名最长可达255个字符。
Linux系统区分文件名的大小写。
以圆点(.)开头的文件名是隐含文件,默认方式下使用“ls"命令并不能把它们在屏幕上显示出来。同样,在默认情况下,shell通配符并不匹配这类文件名。
3、文件名扩展字符
- 星号(*)与0个或多个任意的字符相匹配,可以匹配当前目录下的所有文件,但以圆点(.)开头的隐含文件除外。
- 问号(?)只与一个任意的字符匹配,可以使用多个问号。
- 方括号([])只与方括号中字符之一匹配,可以用短横线代表一个范围内的字符、在方括号中如果以惊叹号开始,表示不与惊叹号后的字符匹配。
4.3.2 目录结构
名称 内容 /bin bin就是二进制英文缩写。在这里存放linux常用操作命令的执行文件,如mv、ls、mkdir等。有时,这个目录的内容和/usr/bin里面的内容一样,它们都是放置一般用户使用得到的执行文件 /boot 这个目录下存放操作系统启动时所要用到的程序。如启动grub就会用得到其下的/boot/grub子目录 /dev 该目录中包含了所有Linux系统中使用的外部设备。要注意的是,这里存放的并不是外部设备的驱动程序,它实际上是一个访问这些外部设备的端口。在Linux中,所有的设备都当作文件一样进行操作,例如/dev/cdrom代表光驱,用户可以方便地像访问文件、目录一样对其进行访问。 /etc 该目录下存放了系统管理时要用到的各种配置文件和子目录。如网络配置文件、文件系统、X系统配置文件、设备配置信息设置用户信息等都在这个目录下。系统在启动过程中需要读取其参数进行相应的配置。 /etc/rc.d 该目录主要存放Linux启动和关闭时要用到的脚本文件 /etc/rc.d/init 该目录存放所有Linux服务默认的启动脚本文件 /home 该目录是Linux系统中默认的用户工作根目录。执行adduser命令后,系统会在/home目录下为对应账户建立一个同名的主目录 /lib 该目录是用来存放系统动态连接共享库的。几乎所有的应用程序都会用到这个目录下的共享库。因此,千万不能轻易对这个目录进行操作 /lost+found 该目录在大多数情况下都是空的。只有当系统产生异常时,会将一些遗失的片段放在此目录下 /media 该目录下是光驱和软驱的挂载点,Fedora Core 4系统已经可以自动挂载光驱和软驱 /misc 该目录下存放从DOS下进行安装的实用工具,一般为空 /mnt 该目录是软驱、光驱、硬盘的挂载点,也可以临时将别的文件系统挂载在此目录下 /proc 该目录是用于防止系统核心与执行程序所需的一些信息。而这些信息是在内存中由系统产生的,故不占用硬盘空间 /root 该目录是超级用户登录时的主目录 /sbin 该目录用来存放系统管理员常用的系统管理程序 /tmp 该目录用来存放不同程序执行时产生的临时文件。一般Linux安装软件的默认安装路径就是这里 /usr 用户的很多应用程序和文件都存放在这个目录下,类似于Wiindows下的Program Files的目录 /usr/bin 系统用户使用的应用程序 /usr/sbin 超级用户使用的比较高级的管理程序和系统守护程序 /usr/src 内核源代码默认的放置目录 /srv 该目录存放一些服务启动之后需要提取的数据 /sys 安装Linux2.6内核中新出现的一个文件系统sysfs sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内行设备树的一个直观反映。当一个内核对象被创建时,对应的文件和目录也在内核子系统中被创建 /var 很多服务的日志信息存放在这里 4.3.3 目录的常用操作命令
- pwd 显示当前所处的目录
- cd 改变工作目录
- ls 列出目录的内容
- mkdir 创建一个目录
- rmdir 删除目录
- tree 以树形目录的形式指定目录下的内容
4.4 文件分类与权限
4.4.1 文件分类
Linux系统是一个典型的多用户系统。为了保护系统的安全性,Linux系统对不同用户访问同一文件或目录的权限做了不同的规定。
文件是Linux的核心,文件类型可以分为普通文件、目录文件、连接文件和设备文件等多种,Linux与Windows一样,都使用扩展名来区分文件类型。
第一个字符表示了该文件的文件类型:
- - 表示普通文件
- d 表示目录
- l 表示一个符号连接文件,实际上它指向另一个文件
- b 表示块设备,如硬盘、光盘或U盘等
- c 表示外围设备,是特殊类型的文件
- s 表示系统的套接字文件
- p 表示系统的管道文件
4.4.2 文件权限
RWX
4.4.3 日志文件
日志文件是ext3文件系统的特点,Linux中日志文件以明文存储,用户可以直接打开查看。日志文件功能强大,用户还可以编写脚本来扫描这些日志,并基于它们的内容去执行某些功能。
/var/log/cron 该日志文件记录守护进程cron所执行的动作,在整个记录前面系统还自动添加了登录用户、登录时间和PID,以及派生出进程的动作
/var/log/maillog 该日志文件记录了每一个发送到系统或从系统发出的电子邮件活动。该文件最大的缺点就是被记录的入侵企图和成功的入侵事件按会被淹没在大量的正常记录中。
/var/log/yun 应用程序日志,该日志记录了所有在系统中安装的应用程序。格式为:日期、时间、应用程序。
/var/log/messages 该日志记录了系统的安装报错信息,由syslog守护程序记录,syslog守护程序接受来自库、守护程序和内核的输入,这个文件是查找引导期间的。该文件是系统出现故障并进行诊断时首要查看的文件。
/var/log/securee 系统安全日志,该日志记录了系统安全的相关信息。
4.4.4 文件的常用操作命令
- find 在指定目录中搜索文件,他的使用权限是所有用户
- locate 用于查找文件
- whereis 在特定目录中查找符合条件的文件
- which 在环境变量$PATH设置的目录里炒找符合条件的文件
- touch 修改文件的存取和修改时间
- file 显示文件或目录的类型
- cp 复制文件或目录到目标文件或目录
- rm 删除文件或目录
- mv 移动或更名现有的文件或目录
- cat 链接文件并打印到标准输出设备上
- head 在屏幕上显示指定文件的开头若干行
- tail 在屏幕上显示指定文件的末尾若干行
- more 如果文件太长,用cat命令只能看到文件
- less 用于分屏文件内容
- grep 在文本文件中查找指定模式大的单词或单词,并在标准输出上显示包括指定字符串模式的所有行
- wc 该命令统计出指定文件的字节数、字数、行数,并输出结果。