1

你为什么无法创建一个文件

 2 years ago
source link: https://os.51cto.com/article/707761.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

你为什么无法创建一个文件-51CTO.COM

你为什么无法创建一个文件
作者:somenzz 2022-04-29 08:00:06
最常见的是 Linux 普通用户在不属于自己家的目录下创建文件会报错,这就是权限问题,Linux 运行一个简单的ls -l 可以看到文件/目录的权限。

你好,我是 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 的数量。

6203d7470de6514de870865f504f07dfbf0907.jpg

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK