面试题:你为什么无法创建一个文件

你好,我是 somenzz,可以叫我征哥,今天看到了一个很好的面试问题,分享给你。

我认为好的面试题,至少符合两点:一是开放性问题,没有标准答案;二是它与具体的技术栈和经验都无关,却能看出一个人的思维过程和技术水平。

“你为什么无法创建一个文件”,就是好问题,而“如何在 NodeJS 中执行 XYZ”或“如何配置 NGINX”,就不是一个好问题。

现在,来梳理一下这个问题。

首先这是一个好问题,好问题没有标准答案,下面的回答也仅供参考。

1、磁盘空间不足

这可能是最简单的答案之一,文件需要保存在磁盘上,无论服务器是 Windows 还是 Linux,无论是本地创建还是远程创建,只要磁盘空间不足,那一定是无法写入文件的。问题的表现通常会看到关键字「Insufficient disk space」排除这个原因很简单,查看磁盘空间即可:

Windows: Wmic logicaldisk

Linux: df -h

2、权限问题

最常见的是 Linux 普通用户在不属于自己家的目录下创建文件会报错,这就是权限问题,Linux 运行一个简单的ls -l 可以看到文件/目录的权限。

ftp、sftp 服务器也会有权限管理,如果无法解决,需要查看服务器的权限配置。

问题的表现通常会有关键字「permission」。

解决办法,配置权限,不建议粗暴的 sudo chmod 777

3、CPU、内存资源耗尽

每个命令通常都会在自己的进程中执行。每个进程都必须有一些资源,并使用一定级别的 CPU 和内存。创建文件同样消耗 CPU 和内存,资源不足时,创建文件的进程长时间处于等待状态,此时也是无法创建文件的,这种情况的现象是卡住,而不是报错。

4、分区问题

分区之后未格式化,或者分区配置错误,此时也是无法写入文件的。

5、网络问题

如果文件系统依赖于网络,网络可能导致服务器之间断开连接,此时也无法写入文件,此外诸如防火墙、安全组、NACL、子网问题,也可能导致写入或读取文件的问题。

6、Linux PID 耗尽

一个操作系统的进行数量是有限的,PID 就是 process id,耗尽就表示进程太多了,无法创建新的进程。我曾经就写了一个 shell 脚本,因为文件名的问题,导致了自己执行自己,结果很快 PID 就不足了,操作系统不接受任何新的操作。

7、Linux Inode 耗尽

一个操作系统的文件数量也是有限的,超过了最大的文件数量,就无法再创建文件。Inode 存储了一个文件或目录的元数据,Inode 的数量很难耗尽,但并不意味着不可能。Linux 运行 df -i 可以查看创建的最大 Inode 数量、当前使用的 Inode 数量和剩余 Inode 的数量。

571fc94fcef8545627b9c5e910048ef3.png

8、断电

这个原因在自己的台式电脑上也不是没有出现过,哈哈。

最后的话

本文分享了一个好的面试题,希望带给你更多的思考,如果有收获,还请点赞、在看、评论。感谢支持。

35907e7f0816efafd3d2f0196ae3eaad.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值