第十章 Linux中的文件类型
一、扩展名:
windows利用文件扩展名来区分文件类型
Linux中文件扩展名和文件类型没有关系
为了容易区分和兼容用户使用windows的习惯,Linux中也会用扩展名来表示文件类型
二、常见文件扩展名:
.tar、.tar.gz、.tgz、.zip、.tar.bz:表示压缩文件,创建命令一般是tar、gzip、zip等
.sh:表示shell脚本,使用shell写成的。
.pl:表示perl语言文件
.py:表示python语言文件
.html、.htm、.php、.jsp、.do:表示网页文件
.conf:表示系统服务的配置文件
.rpm:表示rpm安装包文件
三、运维开发语言:
shell/python/php三者之一(perl快被淘汰),至少一个,最好两个
四、LINUX中的七种文件类型
Linux中,一切皆文件。常见的有:普通文件、目录、字符设备文件、块设备文件、符号链接文件等
七种文件类型
d 目录文件。
l 符号链接(指向另一个文件,类似于瘟下的快捷方式)。
s 套接字文件。
b 块设备文件,二进制文件。
c 字符设备文件。
p 命名管道文件。
- 普通文件(3种),或更准确地说,不属于以上几种类型的文件
纯文本文件(ASCII):内容可直接读取,字母,数字等。如配置文件等,Linux中绝大多数文件是纯文本文件。
file a.txt
ASCII text
二进制文件(inary):Linux中的可执行文件,如命令文件等
file /bin/cat
ELF 64-bit LSB executable
数据格式的文件(data):具有特定格式的
file /var/log/wtmp
data
ls -l 的结果中的第一个字符表示文件类型
ls-l
-rw-r--r-- 1 root root 2 03-27 02:00 fonts.scale
drwxr-xr-x 2 root root 4.0K 04-19 10:53 mydir
ls-la /dev/hda1
brw-r----- 1 root disk 3, 1 2006-04-19/dev/hda1
ls-lh /var/lib/mysql/mysql.sock
srwxrwxrwx 1 mysql mysql 0 04-19 11:12/var/lib/mysql/mysql.sock
ls-lh setup.log
lrwxrwxrwx 1 root root 11 04-19 11:18setup.log -> install.log
find/var/spool -type p | xargs ls -l
prw--w--w-. 1 postfix postfix 0 Jan 2 17:08 pickup
prw--w--w-. 1 postfix postfix 0 Jan 2 17:08 qmgr
ln-s kernel-6.15-1.2025_FC5.i686.rpm kernel.rpm #创建链接文件
ls-lh kernel*
-rw-r--r-- 1 root root 14M 03-16 07:53kernel-6.15-1.2025_FC5.i686.rpm
lrwxrwxrwx 1 root root 33 04-19 11:27 kernel.rpm ->kernel-6.15-1.2025_FC5.i686.rpm
第十一章 Linux中的文件属性
一、查看文件属性
ls-lhi
inode 文件类型及权限硬链接数 属主 属组 文件/目录大小最后修改时间(月日时间) 文件名
403848 -rw-------. 1 root root 2.5K Jan 2 00:00 anaconda-ks.cfg
403862drwxr-xr-x. 2 root root 4.0K Jan 1 16:03 Desktop
403866drwxr-xr-x. 2 root root 4.0K Jan 1 16:03 Documents
403863drwxr-xr-x. 2 root root 4.0K Jan 1 16:03 Downloads
二、各属性说明
1、inode: 索引节点(index node)
(1)理解inode
文件储存在硬盘上(硬盘格式化后分为inode和block两部分,inode存文件信息,block存文件数据),硬盘
的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,
不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。
这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector组成
一个 block。文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件
的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。
(2)inode的内容
inode包含文件的元信息,具体来说有以下内容,但不包含文件名:
* 文件的字节数
* 文件拥有者的User ID
* 文件的Group ID
* 文件的读、写、执行权限
* 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,
atime指文件上一次打开的时间。
* 链接数,即有多少文件名指向这个inode
* 文件数据block的位置(指针,inode节点和block的对应关系)
(3)inode的特殊作用
由于inode号码与文件名分离,这种机制导致了一些Unix/Linux系统特有的现象。
1.有时,文件名包含特殊字符,无法正常删除。这时,直接删除inode节点,就能起到删除文件的作用。
2.移动文件或重命名文件,只是改变文件名,不影响inode号码。
3.打开一个文件以后,系统就以inode号码来识别这个文件,不再考虑文件名。因此,通常来说,系统无
法从inode号码得知文件名。
第3点使得软件更新变得简单,可以在不关闭软件的情况下进行更新,不需要重启。因为系统通过inode
号码,识别运行中的文件,
不通过文件名。更新的时候,新版文件以同样的文件名,生成一个新的inode,不会影响到运行中的文件。等
到下一次运行这个软件的时候,
文件名就自动指向新版文件,旧版文件的inode则被回收。
(4)查看系统inode的大小:
dumpe2fs /dev/sda3 | grep -i "Inodesize"
CentOS6's / inode size 256
CentOS6's boot inode size 128
CentOS5's / inode size 128
(5)查看到系统inode的总量和使用量
df -i
(6)inode小结
(a)磁盘分区格式化文件系统后,会分为inode和block两部分内容
(b)inode存放文件的属性以及指向文件实体的指针,文件名不在inode里,一般在上级目录的了block里
(c)访问文件的过程:文件名--->inode(判断权限等)--->blocks
(d)inode一般情况默认大小256B,block大小1 2 4K,默认4K。引导分区等特殊分区一般为inode128B,Block 1K
(e)通过df -i查看inode的数量及使用情况,dumpe2fs /dev/sda? 来查看分区的inode和block的大小和数量
(f)一个文件至少要占用一个inode和一个block,多个文件可以占用同一个inode(硬链接)
(g)一个block只能被一个文件使用,如果文件很小而block很大,剩余空间浪费,无法被其它文件使用
(h)block不是越大越好,要根据业务的文件大小进行选择,一般默认为4K
(i)可以在格式化磁盘时改变indoe和block的大小
mkfs.ext4-b 2048 -l 2048 /dev/sdb1
dumpe2fs/dev/sdb1 | grep "Block size"
dumpe2fs/dev/sdb1 | grep "Inode size"
2、文件权限
drwxr-xr-x.
第一个字符代表文件(-)、目录(d),链接(l)
其余字符每3个一组(rwx),读(r)、写(w)、执行(x)、无权限(-)
第一组(第2、3、4位): rwx,文件所有者的权限是读、写和执行
第二组(第5、6、7位): r-x,与文件所有者同一组的用户的权限是读、执行,但不能写
第三组(第8、9、10位): r-x,不与文件所有者同组的其他用户的权限是读、执行,但不能写
也可用数字表示为:r=4,w=2,x=1 因此rwx=4+2+1=7
就是在权限的最后面有一个.(英文句号)这个符号,CentOS6中才有,CentOS5 没有。这个符号与SELinux 有关。关闭SELinux后再创建的文件就不会有这个符号了。
3、硬链接数
(1)硬链接介绍
硬链接是指通过索引节点(Inode)来进行链接,是文件的又一个入口,是已经存在的文件的一个别名,当原文件删除时,新建的文件仍然可以使用。inode信息中有一项叫做"硬链接数",记录指向该inode的文件名总数