bash 设备上没有剩余空间

bash 设备上没有剩余空间

在 VPS 上,当我按下我的用户下的选项卡时,我得到:

bash: cannot create temp file for here-document: No space left on device

但是在 root 下它可以正常工作,发生了什么?

答案1

当你按下 Tab 键时,会启动某些/特定的脚本
(可以定义多个,启动哪一个取决于当前在提示符下输入的命令).
这些脚本经常使用 /tmp 中的临时文件

您看到此问题的登录名要么是 /tmp 中的空间不足(例如配额),要么是根本没有配额,或者脚本(错误地?)尝试写入/处理太大的数据。

一般情况下,root 有较多配额或没有限制。

sudo-i
cd /tmp
du -h | 排序 -n | 更少

应该显示 /tmp 中的内容及其占用的空间。

还:

df -h --output=源,目标,ipcent,pcent
文件系统已挂载在 IUse% Use%
...

在“正常”情况下,/tmp 或 tmpfs 的 Use% 列下不应该有高数字(存在,取决于系统设置)。

答案2

检查文件系统的格式。我遇到的典型设置使用了以下设置:

  • 格式 Ext2(好吧,现在可能有点过时了,可能是 ext4)
  • 预留空间:5%

最后一个意思是说,5% 的空间是为 uid 0 保留的。

如果您有一个 200GB 的驱动器和一个单独的分区,那么普通用户可以将其填充到 190GB。此时她将收到文件系统已满错误。Df 将报告使用率为 100%。

如果此时您以 root 身份尝试此操作,则可以再写入 5%。Df 将显示已满 100% 以上。


现在将其应用到您的问题中。文件系统的使用率是否超过 100%?

答案3

今天我们遇到了这个问题,结果Inode 的问题

您应该运行df -i以查看您使用的 Inode 数量。如果您的 Inode 数量IUse%等于或接近100,您应该找到尽可能多的小文件或零文件,然后将其全部删除。

您可以通过以下方式找到文件(归功于链接的文章):

for i in /*; do echo $i; find $i |wc -l; done

相关内容