文件无法被创建 (文件无法被创建怎么弄)

今天看到了一个很好的面试问题,分享给你。

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

“你为什么无法创建一个文件”,就是好问题,而“如何在 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 的数量。

8、断电

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


电脑