文件的属性及类型

寸阳分阴须爱惜,休负春色与时光。这篇文章主要讲述文件的属性及类型相关的知识,希望能为你提供帮助。
?文件属性?

[root@localhost ~]# ll

- rw-r--r-- 1 root root 56479 Mar 25 10:11 blog.driverzeng.com_access.log

d rwxr-xr-x 2 root root 6 Mar 29 08:39 zls


# 以空格为分隔符第一列:

文件的类型

-:普通文件 touch

d:directory 目录 mkdir

l:link 软链接文件(windows快捷方式) ln

-----------------------------------------------------------

c:设备文件(char字符设备文件)和字符相关的设备,举例:打印机,终端

b:设备文件(block块设备文件)和存储相关的设备,举例:硬盘,U盘,磁盘分区

s:socket安全套接字文件,网络编程

p:pipe管道文件,父进程与子进程之间的通信文件


# 以空格为分隔符第二列:

文件的权限:Permission denied(权限被拒绝)

rw- r-- r--

rwx rwx rwx

r:read 读

w:write 写

x:exec 执行

-:该权限位上没有权限


# 以空格为分隔符第三列:

指该文件的硬链接数


# 以空格为分隔符第四列:

该文件的属主


# 以空格为分隔符第五列:

该文件的属组


# 以空格为分隔符第六列:

该文件的大小


# 第七列 文

件的创建时间


# 最后一列

文件名

?文件类型查看命令?
file


## 语法:

file [选项] 文件...


## 举例

[root@localhost ~]# file blog.driverzeng.com_access.log

blog.driverzeng.com_access.log: ASCII text, with very long lines

[root@localhost ~]# file pikachu

pikachu: JPEG image data, JFIF standard 1.01


[root@localhost ~]# file a.sh

a.sh: ASCII text [root@localhost ~]# file a.sh a.sh: Bourne-Again shell script, ASCII text executable


[root@localhost ~]# file /bin/ls

/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=ceaf496f3aec08afced234f4f36330d3d13a657b, stripped


[root@localhost ~]# file

/dev/sda /dev/sda: block special


[root@localhost ~]# file /dev/pts/0

/dev/pts/0: character special

?系统的链接文件??一个文件在Linux中,会被分为两部分:?
  • ?真实数据?:文件中的真实内容
  • ?元数据?:用来形容一个文件数据
?一个文件在Linux中,存储也会被分为两部分:?
  • ?inode?:用来存储,文件的元数据
  • ?block?:用来存储,文件的真实数据,一个block是4k
## 查看磁盘空间

df


## 选项

-h:human人类可读

-i:查看inode空间


## 举例

# 查看磁盘的block

[root@localhost ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/sda3 19G 1.7G 17G 9% /

devtmpfs 476M 0 476M 0% /dev

tmpfs 487M 0 487M 0% /dev/shm

tmpfs 487M 39M 449M 8% /run

tmpfs 487M 0 487M 0% /sys/fs/cgroup

/dev/sda1 497M 120M 378M 25% /boot

tmpfs 98M 0 98M 0% /run/user/0


# 查看磁盘的inode

[root@localhost ~]# df -hi

Filesystem Inodes IUsed IFree IUse% Mounted on

/dev/sda3 9.3M 35K 9.3M 1% /

devtmpfs 119K 377 119K 1% /dev

tmpfs 122K 1 122K 1% /dev/shm

tmpfs 122K 750 121K 1% /run

tmpfs 122K 16 122K 1% /sys/fs/cgroup

/dev/sda1 250K 326 250K 1% /boot

tmpfs 122K 1 122K 1% /run/user/0

?链接文件的种类?
  • ?软链接文件?
软链接相当于windows的快捷方式,软链接文件会将?inode?指向源文件的?block?
ls

-i:查看该文件的inode号


## 创建软链接的命令

ln:link 链接,创建链接文件

-s:soft 软,创建软链接文件


ln -s 源文件 链接文件的位置


[root@localhost ~]# ln -s /root/1.txt /tmp/

[root@localhost ~]# ll /tmp/

total 196

lrwxrwxrwx 1 root root 11 Mar 29 10:54 1.txt -> /root/1.txt


[root@localhost ~]# ln -s /root/1.txt /tmp/2.txt

[root@localhost ~]# ll /tmp/

total 196

lrwxrwxrwx 1 root root 11 Mar 29 10:54 1.txt -> /root/1.txt

lrwxrwxrwx 1 root root 11 Mar 29 10:55 2.txt -> /root/1.txt


# 1.软链接文件,会受到源文件的影响,如果源文件删除,软链接文件也无法使用

[root@localhost ~]# cat /tmp/1.txt

123456

a

[root@localhost ~]# cat /tmp/2.txt

123456

a

[root@localhost ~]# cat /root/1.txt

123456

a

[root@localhost ~]# rm -f /tmp/1.txt

[root@localhost ~]# cat /tmp/2.txt

123456

a

[root@localhost ~]# cat /root/1.txt

123456

a

[root@localhost ~]# rm -f /root/1.txt

[root@localhost ~]# cat /tmp/2.txt

cat: /tmp/2.txt: No such file or directory

[root@localhost ~]# ll /tmp/2.txt l

rwxrwxrwx 1 root root 11 Mar 29 10:55 /tmp/2.txt -> /root/1.txt

  • ?硬链接文件?
若一个inode号对应多个文件名,则称这些文件为硬链接。换句话说,硬链接就是同一个文件使用了多个别名
## 创建硬链接的命令

ln


ln 源文件 链接文件的位置


## 举例

[root@localhost ~]# ln /root/info.txt /opt/

[root@localhost ~]# ln /root/info.txt /opt/info1.txt


## 查看

[root@localhost ~]# ls -li /root/info.txt

33575833 -rw-r--r-- 3 root root 72 Mar 25 11:09 /root/info.txt

[root@localhost ~]# ls -li /opt/info.txt

33575833 -rw-r--r-- 3 root root 72 Mar 25 11:09 /opt/info.txt

[root@localhost ~]# ls -li /opt/info1.txt

33575833 -rw-r--r-- 3 root root 72 Mar 25 11:09 /opt/info1.txt


## 查看文件内容

[root@localhost ~]# cat /root/info.txt

Im zzgx,"18years old QQ 133411023

Im wyk,"103years old QQ 383838384

[root@localhost ~]# cat /opt/info.txt

Im zzgx,"18years old QQ 133411023

Im wyk,"103years old QQ 383838384

[root@localhost ~]# cat /opt/info1.txt

Im zzgx,"18years old QQ 133411023

Im wyk,"103years old QQ 383838384


## 特性

1.硬链接文件,不会受到原文件的影响

2.所有硬链接文件的inode号与源文件相同

3.修改一个文件,其他文件都会改变

4.不允许给目录创建硬链接

5.默认情况下,新创建的目录,有两个硬链接,一个是目录本身,一个是该目录下的.目录

[root@localhost ~]# ls -lai /root/test -d

33575836 drwxr-xr-x 2 root root 6 Mar 29 11:52 /root/test

[root@localhost ~]# ls -lai /root/test

total 4

33575836 drwxr-xr-x 2 root root 6 Mar 29 11:52 .


## 报错

[root@localhost opt]# ln /root/wyk /tmp/wyk

ln: ‘/root/wyk’: hard link not allowed for directory

?硬链接和软链接的区别?
区别
硬链接
软链接
创建命令
【文件的属性及类型】ln
ln-s
对象
只能对普通文件创建
普通文件和目录
是否收到源文件影响


inode号
相同
不同
跨分区创建
不可以
可以
?企业面试题?当前磁盘空间还剩余500G,但是就无法往里面写入数据,报错,磁盘空间满了。
# 1.首先磁盘存储被划分为两块

inode:存储文件的元数据

lock:存储文件的真实数据


# 2.在问题当中剩余500G,这500G指的是block


# 3.应该是inode被占满了


# 4.这种情况,一般是系统中,小文件太多导致的


# 5.找到系统中的小文件(没用的),并删除


##### 使用find命令

演示
## 查看inode

[root@localhost ~]# df -ih

Filesystem Inodes IUsed IFree IUse% Mounted on

/dev/sda3 9.3M 35K 9.3M 1% /

devtmpfs 119K 377 119K 1% /dev

tmpfs 122K 1 122K 1% /dev/shm

tmpfs 122K 750 121K 1% /run

tmpfs 122K 16 122K 1% /sys/fs/cgroup

/dev/sda1 250K 327 250K 1% /boot

tmpfs 122K 1 122K 1% /run/user/0


## 从/dev/zero中取出1024k数据,保存到/opt/disk文件中

[root@localhost ~]# dd if=/dev/zero of=/opt/disk bs=1K count=1024

1024+0 records in

1024+0 records out

1048576 bytes (1.0 MB) copied, 0.0063998 s, 164 MB/s


## 查看/opt/disk大小为1M

[root@localhost ~]# ll -h /opt/disk

-rw-r--r-- 1 root root 1.0M Mar 29 12:26 /opt/disk


## 格式化,指定inode

[root@localhost ~]# mkfs.ext4 -i 1024 /opt/disk

mke2fs 1.42.9 (28-Dec-2013)

/opt/disk is not a block special device.

Proceed anyway? (y,n) y


Filesystem too small for a journal

Discarding device blocks: done

Filesystem label=

OS type: Linux

lock size=1024 (log=0)

Fragment size=1024 (log=0)

Stride=0 blocks, Stripe width=0 blocks

1024 inodes, 1024 blocks

51 blocks (4.98%) reserved for the super user

First data block=1

Maximum filesystem blocks=1048576

1 block group

8192 blocks per group, 8192 fragments per group

1024 inodes per group


Allocating group tables: done

Writing inode tables: done

Writing superblocks and filesystem accounting information: done


## 在/下创建一个目录data1

[root@localhost ~]# mkdir /data1


## 刚才的分区,挂载到/data1下

[root@localhost ~]# mount -t ext4 -o loop /opt/disk /data1


## 查看新分区inode大小

[root@localhost ~]# df -ih

Filesystem Inodes IUsed IFree IUse% Mounted on

/dev/sda3 9.3M 35K 9.3M 1% /

devtmpfs 119K 381 119K 1% /dev

tmpfs 122K 1 122K 1% /dev/shm

tmpfs 122K 756 121K 1% /run

tmpfs 122K 16 122K 1% /sys/fs/cgroup

/dev/sda1 250K 327 250K 1% /boot

tmpfs 122K 1 122K 1% /run/user/0

/dev/loop0 1.0K 11 1013 2% /data1


## 查看新分区block大小

[root@localhost ~]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/sda3 19G 1.7G 17G 9% /

devtmpfs 476M 0 476M 0% /dev

tmpfs 487M 0 487M 0% /dev/shm

tmpfs 487M 39M 449M 8% /run

tmpfs 487M 0 487M 0% /sys/fs/cgroup

/dev/sda1 497M 120M 378M 25% /boot

tmpfs 98M 0 98M 0% /run/user/0

/dev/loop0 891K 21K 799K 3% /data1


## 演示inode被沾满

[root@localhost data1]# touch 1001..1014

touch: cannot touch ‘1014’: No space left on device

[root@localhost data1]# touch zls touch: cannot

touch ‘zls’: No space left on device [root@localhost data1]#

touch zls touch: cannot touch ‘zls’: Nospace left on device

[root@localhost data1]# touch zls1

touch: cannot touch ‘zls1’: No space left on device

[root@localhost data1]# df -h

Filesystem Size Used Avail Use% Mounted on

/dev/sda3 19G 1.7G 17G 9% /

devtmpfs 476M 0 476M 0% /dev

tmpfs 487M 0 487M 0% /dev/shm

tmpfs 487M 39M 449M 8% /run

tmpfs 487M 0 487M 0% /sys/fs/cgroup

/dev/sda1 497M 120M 378M 25% /boot

tmpfs 98M 0 98M 0% /run/user/0

/dev/loop0 891K 39K 781K 5% /data1

到此这篇关于文件的属性及类型内容已经讲完,如果未能解决您的问题,请参考下面的文章:

    推荐阅读