Linux之ext文件系统(附面试题)

Letitia ·
更新时间:2024-09-21
· 771 次阅读

一、目录结构

boot

系统启动相关文件

home 普通用户家目录
root root用户家目录
dev

设备文件,常用的有 /dev/nul --垃圾桶

/dev/zero  生产500M的大文件:dd if=/dev/zero of=BIGFILE bs=1M count=50

bin 普通命令
sbin 系统命令
etc 配置文件
lib 库文件
llib64 64位库文件
media 挂载可移动设备
mnt 挂载临时文件系统
proc 伪文件系统
tmp 临时文件目录,所有用户都可以管理目录
二、文件管理 1、文件创建 touch:修改文件时间戳,如果文件不存在则创建空文件。

时间戳:atime:access time,文件被访问时间

               ctime:change time,元数据发生变化的时间

               mtime:modify time,内容改变,包括文件内容,权限,所有者等

或者通过vi,vim,(vi/vim内容较多,将额外作为一篇文章来讲) 或者通过重定向方式:cmd>file 2、文件查看 cat:打印全部内容 tail:打印尾部内容 head:打印首部内容 more、less:分屏查看文件内容 3、文件复制

cp命令可用于文件复制。

cp [OPTIONS] FILE1 FILE2 cp FILE1 FILE2 ... DIR cp DIR1 DIR2

OPTION选项如下:

-a:archive,归档,文件属性不变化
-R|-r:Recursive,递归,用于目录操作
-f:force,忽略交互,强制执行
-i:interactive,交互
-v:verbose,命令执行过程

4、文件移动

mv命令可用于文件移动。

mv FILE1 FILE2 mv FILE ... DIR mv DIR1 DIR2

OPTION选项如下:

-i:interactive,交互
-v:verbose,命令执行过程

-r:Recursive,递归,用于目录操作

5、文件删除

rm命令可用于文件删除。

rm [OPTION] FILE

OPTION选项如下:

-R|-r:Recursive,递归,用于目录操作
-f:force,忽略交互,强制执行
-i:interactive,交互
-v:verbose,命令执行过程

6、文件类型
d 目录
- 普通文件
c 字符设备
b 块设备
s 套接字
l 软连接
p 管道
面试题:

(面试题主要是我个人一些亲身经历的面试题目,摘录比较常见的提问,答案是我参考网上答案的一些总结,这块知识不止下面的面试题目,同时每家公司也不止问文件系统。)

1、(腾讯)硬链接与软连接的特点分别是什么?

硬链接 软连接

硬链接文件与原文件共用一个inode

硬链接数等于inode被引用的次数

硬链接不能对目录做

硬链接不能跨文件系统

本质是快捷方式

使用新的inode和block

软连接可以对文件或目录做

软连接可以跨文件系统

(追问)常见文件系统有哪些,为什么硬链接不支持跨文件系统?

网络文件系统:如nfs、cfs等;

磁盘文件系统:如ext4、ext3等;

特殊文件系统:如proc、syfs、ramfs、tmpfs等。

当打开一个文件时,会先找到该文件的inode号,再根据inode号找到inode信息,再根据inode信息找到该文件数据所在的block,由于inode不会在其他分区产生关联信息,而硬链接文件是在同分区下指向同一个inode的两个文件,所以不支持跨分区。

(追问)为什么硬链接不支持对目录创建?

硬链接相当于镜像的方式,对目录创建硬链接后,系统会对目录下的所有文件都做一次硬链接,将所有文件复制过去,这样操作系统在访问这个目录时就要不断的遍历,大大增加了io操作,容易进入死循环;

同时Linux文件系统中的目录隐藏了两个特殊的目录,当前目录和父目录,这两个是硬链接,若再对目录创建硬链接会产生目录环。

(扩展)不同文件系统如何实现传输?

通过VFS,VFS是虚拟文件系统,在内核中为用户空间层的文件系统提供相关的接口,实现了open()、read()等系统调用并使得cp等用户空间程序可跨文件系统。

2、(网易)删除一个文件,但是磁盘空间没有容量变化,是什么原因?

(1)文件为空,所以删除后容量不变;

(2)文件为软连接

(3)文件被进程锁定,或有进程一直在向该文件写数据。

执行下面命令可以获取一个已经被删除但仍然被应用程序占用的文件列表。

lsof | grep delete

解决方法:关闭或重启服务进程;

                  重启操作系统;

                 如果该文件是日志文件的话,可以用echo " " > /tmp/access.log在线清空这个文件,同时也可以保证进程可以继续写入。这种方法适用于Apache,Tomcat,Nginx等web服务产生的日志文件

Suhand 原创文章 73获赞 8访问量 2万+ 关注 私信 展开阅读全文
作者:Suhand



面试题 面试 Linux 系统 ext

需要 登录 后方可回复, 如果你还没有账号请 注册新账号