0
点赞
收藏
分享

微信扫一扫

文件的属性及类型

文件属性

[root@Y ~]# ll
total 164
- rw-r--r--. 1 root root 164034 Mar 26 13:35 blog.driverzeng.com_access.log
d rwxr-xr-x. 2 root root 6 Mar 29 22:41 yjt
l rwxrwxrwx. 1 root root 7 Mar 16 00:21 bin -> usr/bin

# 以空格为分隔符第一列:
文件的类型
-:普通文件 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@Y ~]# file blog.driverzeng.com_access.log
blog.driverzeng.com_access.log: ASCII text, with very long lines
(text 文本格式,内容很长)

[root@Y ~]# file tupian
tupian: JPEG image data, JFIF standard 1.01
(JPEG image图片格式)

[root@Y ~]# file a.sh
a.sh: Bourne-Again shell script, ASCII text executable
(shell 脚本)

[root@Y ~]# 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]=aaf05615b6c91d3cbb076af81aeff531c5d7dfd9, stripped
(系统命令)

[root@Y ~]# file /dev/sda
/dev/sda: block special

[root@Y ~]# file /dev/pts/0
/dev/pts/0: character special

系统的链接文件

一个文件在Linux中,会被分成两部分:

  • 真实数据:文件中的真实内容
  • 元数据:用来形容一个文件数据

一个文件在Linux中,储存也会被分成两部分:

  • inode:用来储存,文件的元数据
  • block:用来储存,文件的真实数据,一个block是4K

文件的属性及类型_硬链接

## 查看磁盘空间
df

## 选项
-h:human 人类可读
-i:查看inode空间

## 举例
# 查看磁盘的block
[root@Y ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 476M 0 476M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 7.7M 479M 2% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/nvme0n1p3 19G 1.5G 18G 8% /
/dev/nvme0n1p1 497M 125M 373M 25% /boot
tmpfs 98M 0 98M 0% /run/user/0

# 查看磁盘的inode
[root@Y ~]# df -hi
Filesystem Inodes IUsed IFree IUse% Mounted on
devtmpfs 119K 384 119K 1% /dev
tmpfs 122K 1 122K 1% /dev/shm
tmpfs 122K 728 121K 1% /run
tmpfs 122K 16 122K 1% /sys/fs/cgroup
/dev/nvme0n1p3 9.3M 30K 9.3M 1% /
/dev/nvme0n1p1 250K 327 250K 1% /boot
tmpfs 122K 1 122K 1% /run/user/0

链接文件的种类

  • 软连接文件

软连接相当于Windows的快捷方式,软连接文件将inode指向源文件的block

文件的属性及类型_软连接_02

ls
-i:查看该文件的inode号

## 创建软连接的命令
ln:link 链接,创建链接文件
-s:soft 软,创建软链接文件

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

[root@Y ~]# ln -s /root/yjt.txt /tmp/
[root@Y ~]# ll /tmp/
lrwxrwxrwx. 1 root root 13 Mar 30 00:06 yjt.txt -> /root/yjt.txt
(创建软连接)

[root@Y ~]# ln -s /root/yjt.txt /tmp/y.txt
[root@Y ~]# ll /tmp/
lrwxrwxrwx. 1 root root 13 Mar 30 00:06 yjt.txt -> /root/yjt.txt
lrwxrwxrwx. 1 root root 13 Mar 30 00:08 y.txt -> /root/yjt.txt
(创建软连接,并且可以修改软连接名字)

# 1.软链接文件,会受到源文件的影响,如果源文件删除,软链接文件也无法使用
[root@Y ~]# cat /tmp/yjt.txt
123
456
[root@Y ~]# cat /tmp/y.txt
123
456
[root@Y ~]# rm -rf yjt.txt
[root@Y ~]# cat /tmp/yjt.txt
cat: /tmp/yjt.txt: No such file or directory

文件的属性及类型_硬链接_03

  • 硬链接文件

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

文件的属性及类型_软连接_04

## 创建硬链接的命令
ln
ln 源文件 链接文件的位置

## 举例
[root@Y ~]# ln /root/yjt.txt /opt/
[root@Y ~]# ln /root/yjt.txt /opt/yjt1.txt

## 查看
[root@Y ~]# ls -li /root/yjt.txt
33574992 -rw-r--r--. 3 root root 0 Mar 30 00:42 /root/yjt.txt
[root@Y ~]# ls -li /opt/yjt.txt
33574992 -rw-r--r--. 3 root root 0 Mar 30 00:42 /opt/yjt.txt
[root@Y ~]# ls -li /opt/yjt1.txt
33574992 -rw-r--r--. 3 root root 0 Mar 30 00:42 /opt/yjt1.txt

##查看文件内容
[root@Y ~]# cat /root/yjt.txt
t
x
s
r
q

[root@Y ~]# cat /opt/yjt.txt
t
x
s
r
q

[root@Y ~]# cat /opt/yjt1.txt
t
x
s
r
q

## 特性
1.硬链接文件,不会受到原文件的影响
2.所有硬链接文件的inode号与源文件相同
3.修改一个文件,其他文件都会改变
4.不允许给目录创建硬链接
5.默认情况下,新创建的目录,有两个硬链接,一个是目录本身,一个是该目录下的.目录

[root@Y ~]# ls -lai /root/test -d
33575836 drwxr-xr-x 2 root root 6 Mar 29 11:52 /root/test
[root@Y ~]# ls -lai /root/test
total 4
33575836 drwxr-xr-x 2 root root 6 Mar 29 11:52 .

## 报错
[root@Y ~]#[root@Y ~]# ln /root/yjt /tmp/yjt
ln: ‘/root/yjt’: hard link not allowed for directory
(硬链接不允许目录)

硬链接和软连接的区别

区别

硬链接

软链接

创建命令

ln

ln -s

对象

只能对普通文件创建

普通文件和目录

是否收到源文件影响

inode号

相同

不同

跨分区创建

不可以

可以

企业面试题

当前磁盘空间还剩余500G,但是就无法往里面写入数据,报错,磁盘空间满了。

# 1.首先磁盘存储被划分为两块
inode:存储文件的元数据
block:存储文件的真实数据

# 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@Y ~]# 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@Y ~]# ll -h /opt/disk
-rw-r--r-- 1 root root 1.0M Mar 29 12:26 /opt/disk

## 格式化,指定inode
[root@Y ~]# 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
Block 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@Y ~]# mkdir /data1

## 刚才的分区,挂载到/data1下
[root@Y ~]# mount -t ext4 -o loop /opt/disk /data1

## 查看新分区inode大小
[root@Y ~]# 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
举报

相关推荐

0 条评论