制表符完成错误:bash:无法为此处文档创建临时文件:设备上没有剩余空间


40

使用标签栏时,我不断收到此错误:

bash:无法为此处文档创建临时文件:设备上没有剩余空间”

有任何想法吗?

我一直在做一些研究,许多人谈论/ tmp文件,该文件可能有一些溢出。当我执行时,df -h我得到:

Filesystem      Size  Used Avail Use% Mounted on 
/dev/sda2       9.1G  8.7G     0 100% /
udev             10M     0   10M   0% /dev
tmpfs           618M  8.8M  609M   2% /run
tmpfs           1.6G     0  1.6G   0% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           1.6G     0  1.6G   0% /sys/fs/cgroup
/dev/sda1       511M  132K  511M   1% /boot/efi
/dev/sda4       1.8T  623G  1.1T  37% /home
tmpfs           309M  4.0K  309M   1% /run/user/116
tmpfs           309M     0  309M   0% /run/user/1000

看起来/ dev / data目录即将爆炸,但是如果我提示:

$ du -sh /dev/sda2
0   /dev/sda2

似乎是空的。

我是Debian的新手,我真的不知道该如何进行。我以前通常通过ssh访问此计算机。除了这个问题,我在这台计算机上还有其他几个问题,它们可能是相关的,例如,每次我想使用GUI输入用户时(使用root都可以),我得到:

Xsession:警告:无法写入/ tmp:Xsession可能会退出并出现错误


2
你想运行类似的东西du -hxd1 /,而不是du /dev/sda2/dev/sda2在磁盘上实际上并不存在。
muru

Answers:


19

您的根文件系统已满,因此您的临时目录(/ tmp和/ var / tmp)也已满。许多脚本和程序需要一些空间来存储工作文件,甚至锁定文件。当/ tmp是不可写的时,会发生不好的事情。

您需要弄清楚如何填充文件系统。通常,发生这种情况的位置是在/ var / log中(检查您是否正在循环日志文件)。或/ tmp可能已满。但是,磁盘还有很多其他填充方式。

du -hs /tmp /var/log

您可能希望重新分区,以给/ tmp它自己的分区(这是旧的做法,但是,如果您有足够的磁盘就可以了),或者将其映射到内存中(这将使其非常快,但是开始如果您过度使用临时文件,则会导致交换问题)。


嗨,我看了您建议的两个命令,我说/ tmp和/ var / log都非常空:分别为60K和49M。
lucasrodesg '16

1
你好,我们又见面了。我终于明白了。我不知道为什么将所有owncloud内容放在/ var下。它再次起作用!
lucasrodesg '16

16

您可能还失去了对该/tmp/目录的写入权限。

它看起来应该像这样:

ls -l / |grep tmp
drwxrwxrwt   7 root root  4096 Nov  7 17:17 tmp

您可以这样修改权限:

chmod a+rwxt /tmp

这对我有用!
约瑟夫·钱伯斯

3
那是grep的无用用法。试试吧ls -ld /tmp
的CVn

您刚刚在恐慌发作时几乎停止了
战斗

10

如果有人送过来,出现此错误时,他们的磁盘未满,一定要只检查不dfdf -i。文件系统上有固定数量的索引节点,每个文件都需要一个。如果您只有大量的小文件,则文件系统很容易用这些小文件填满,而在运行时驱动器上仍有大量空间df


这就是我的问题!我一直试图寻找正在占用的空间。那根本不是问题。我已经用完了索引节点。/dev/root 4980000 4980000 0 100% /也许系统应该以适当的错误消息响应?
ˆᵛˆ

3

我遇到错误,然后我看到了

[  672.995482] EXT4-fs (sda2): Remounting filesystem read-only
[  672.999802] EXT4-fs error (device sda2): ext4_journal_check_start:60: Detected aborted journal

我能够确认这一点

mount | grep -i sda2
/dev/sda2 on / type ext4 (ro,relatime,errors=remount-ro,data=ordered)

2

找到太满的文件夹的最快方法是缩小根目录文件夹中的文件大小。您可以通过以下方式从根文件夹开始:

sudo du -h --max-depth=1 /

然后-增加深度,即以下级别:

sudo du -h --max-depth=2 /

或-更快-您将查看哪个文件夹占用了最多的磁盘空间,并对这个文件夹进行了相同的操作:

sudo du -h --max-depth=1 /home/<user>/<overfull-folder>

找到它后,只需将其删除:

rm -rf <path to overfull-folder>

1
有很多输出文件,最好按大小排序sudo du -h --max-depth=1 / | sort -h(底部sort -hr较大的文件,顶部较大的文件)
wranvaud

0

对于我同样的错误,这是一个问题,因为此服务器在CloudLinux上,解决了 cagefsctl --remount username


-2

这是因为磁盘空间不足,您需要清理大文件或清理占用空间的进程:

  1. df -h 查看硬盘空间
  2. du -sh /* 查看哪个目录最大,逐步查找大文件
  3. du -h --max-depth=1 找到最大的文件

这似乎只是在
反驳
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.