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

系统 Linux
最常见的是 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 的数量。

8.断电

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

责任编辑:武晓燕 来源: Python七号
相关推荐

2022-03-03 08:02:55

数据集成平台

2016-03-21 14:33:23

JavaPython程序员

2015-05-15 09:56:26

程序员代码

2015-05-13 13:59:02

码农拒绝

2012-09-03 09:52:39

虚拟化

2013-07-09 10:44:05

PowerShell

2017-11-14 11:12:50

Go语言编译器

2023-03-02 08:37:15

2022-09-19 16:38:59

数据产品SaaSSnowflake

2013-08-09 09:49:19

开源怎么开源库开源

2016-10-27 11:11:12

头条

2009-08-31 13:53:03

C#创建一个文件

2021-07-30 15:31:35

代码重用漏洞攻击

2013-09-05 09:15:29

云安全

2014-02-11 10:09:37

中小企业UC

2015-07-28 11:22:30

大数据浪潮

2016-01-26 17:47:58

SaaSSaaS平台SaaS服务

2013-09-04 16:27:23

云计算安全云安全

2022-02-10 11:43:54

DUBBO线程池QPS

2021-01-16 16:21:06

开发者手机苹果
点赞
收藏

51CTO技术栈公众号