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

luc*_*esg 77 shell ssh debian tmp

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

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
Run Code Online (Sandbox Code Playgroud)

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

$ du -sh /dev/sda2
0   /dev/sda2
Run Code Online (Sandbox Code Playgroud)

好像是空的。

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

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

Mic*_*eer 43

如果有人送过来,出现此错误时,他们的磁盘未满,一定要只检查不dfdf -i。文件系统上有固定数量的 inode,每个文件都需要一个。如果您只有大量的小文件,那么当您运行df.

  • 这就是我遇到的问题!我一直试图找到占据空间的东西。那根本不是问题。我已经完全用完了 inode。`/dev/root 4980000 4980000 0 100% /` 也许系统应该以适当的错误消息响应? (2认同)
  • @ShahriarRahmanZahin 如果你有太多文件,你将不得不删除一些。将重要的内容移到其他地方,删除不需要的旧日志或类似内容。如果它是你的软件,也许将其更改为使用更少的文件(也许使用 sqlite 数据库而不是文件系统作为数据库?),你可以使用 cron 作业来清除旧的不需要的日志并确保临时文件不会闲置。如果您控制文件系统,也许可以使用更多可用的索引节点进行备份和重新创建?由于不了解你的情况,所以无法给出具体答案。祝你好运。 (2认同)

小智 42

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

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

du -hs /tmp /var/log
Run Code Online (Sandbox Code Playgroud)

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

  • 对于任何使用“ncdu”来跟踪占用空间的人,请尝试使用“sudo”运行它。它没有显示 /var/log 的真实大小,直到我使用 sudo 运行它,因为 /var/log/httpd 属于 `root:root`。 (2认同)

dot*_*art 22

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

它应该是这样的:

ls -l / |grep tmp
drwxrwxrwt   7 root root  4096 Nov  7 17:17 tmp
Run Code Online (Sandbox Code Playgroud)

您可以像这样修复权限:

chmod a+rwxt /tmp
Run Code Online (Sandbox Code Playgroud)

  • 这是 grep 的无用用法。试试`ls -ld /tmp`。 (6认同)

小智 7

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

sudo du -h --max-depth=1 /
Run Code Online (Sandbox Code Playgroud)

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

sudo du -h --max-depth=2 /
Run Code Online (Sandbox Code Playgroud)

或者 - 更快 - 你看看哪个文件夹占用了最多的磁盘空间,并在这个文件夹上做同样的事情:

sudo du -h --max-depth=1 /home/<user>/<overfull-folder>
Run Code Online (Sandbox Code Playgroud)

一旦你找到它,只需删除它:

rm -rf <path to overfull-folder>
Run Code Online (Sandbox Code Playgroud)

  • 对于许多输出文件,最好使用 `sudo du -h --max-depth=1 / | 按大小对它们进行排序。sort -h`(底部较大的文件或顶部较大的文件`sort -hr`) (2认同)

Eva*_*oll 5

我出错了,然后我看到了

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

我能够确认这一点,

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