设备上没有剩余空间,尽管实际上是有的。

一个屏幕破损的笔记本电脑,我通过SSH访问。执行sudo apt-get autoremove命令时出现以下错误。
cp: error writing ‘/tmp/mkinitramfs_zN6ZvT//lib/x86_64-linux-gnu/libpthread.so.0’: No space left on device
cp: failed to extend ‘/tmp/mkinitramfs_zN6ZvT//lib/x86_64-linux-gnu/libpthread.so.0’: No space left on device
cp: error writing ‘/tmp/mkinitramfs_zN6ZvT//sbin/modprobe’: No space left on device
cp: failed to extend ‘/tmp/mkinitramfs_zN6ZvT//sbin/modprobe’: No space left on device
cp: error writing ‘/tmp/mkinitramfs_zN6ZvT//sbin/rmmod’: No space left on device
cp: failed to extend ‘/tmp/mkinitramfs_zN6ZvT//sbin/rmmod’: No space left on device

我从其他命令中也得到了类似的错误,但是gparted告诉我笔记本电脑上的单个分区还剩下超过20GB的空间。这是df命令的输出结果。
$ df -i
Filesystem      Inodes  IUsed   IFree IUse% Mounted on
udev            502644    484  502160    1% /dev
tmpfs           505433    503  504930    1% /run
/dev/sda1      7331840 214087 7117753    3% /
none            505433      2  505431    1% /sys/fs/cgroup
none            505433      3  505430    1% /run/lock
none            505433      4  505429    1% /run/shm
none            505433     16  505417    1% /run/user
overflow        505433    401  505032    1% /tmp

而且:

$ df -k
Filesystem     1K-blocks     Used Available Use% Mounted on
udev             2010576       12   2010564   1% /dev
tmpfs             404348     1284    403064   1% /run
/dev/sda1      115247656 83994028  25809372  77% /
none                   4        0         4   0% /sys/fs/cgroup
none                5120        0      5120   0% /run/lock
none             2021732      204   2021528   1% /run/shm
none              102400       16    102384   1% /run/user
overflow            1024     1024         0 100% /tmp

在我运行了sudo apt-get upgrade之后,错误就出现了。

请使用以下命令删除不需要的文件:sudo apt autoremove,然后重新检查您的存储空间。 - George Udosen
你尝试过 sudo apt autoclean 吗? - Ravexina
1嗯,在问题中提到了autoremove会给我报错。autoclean则没有任何作用。 - Reza
5个回答

在过去的某个时刻,您的根文件系统满了,并创建了一个小的临时/tmp来使启动成功。这个小的/tmp从未被删除,所以现在,即使您在根目录上有空间,您仍然会填满这个小的/tmp并遇到问题。只需卸载它即可:
sudo umount /tmp

当然,尽量确保你的/是尽可能干净的。
通常情况下,/tmp只是根(/)文件系统的一部分,不需要单独挂载,除非出现特殊情况,比如根文件空间不足(当某个守护程序创建你所看到的/tmp时),或者你的/位于一个非常慢的媒体上(比如USB闪存驱动器),并且希望将/tmp放在内存中以提高性能,即使空间有限。

好的,我使用-l选项并运行了autoremove。现在我该如何重新挂载它? - Reza
5它给我返回了umount: /tmp: not mounted。我该怎么办? - mrid
你有一个不同的问题,所以请提出你自己的问题并提供你的具体信息。 - ubfan1

如果您遇到这个问题,出现错误时似乎表明磁盘已满但实际上并非如此,请确保还检查了inode的使用情况。

您可以使用df -i命令快速获得每个挂载点已用/可用inode的报告。

如果发现您的inode非常低或已用完,则下一步是确定哪个文件夹占用了大部分的inode。由于每个文件和目录都使用一个inode,您可能有一个包含数十万个微小或空文件的文件夹,它们占用了所有的inode。通常的嫌疑对象包括:临时目录、网站缓存目录、软件包缓存目录等。

使用以下命令获取使用最多inode的子目录的有序列表:

sudo find . -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n

在你的根目录下运行这个,然后一直深入,直到找到罪魁祸首。

我相信你有很多未使用的文件,可以用以下方法删除它们:
sudo apt autoremove

然后使用df命令重新检查您的空间。

我遇到了磁盘空间不足的问题,然后我在终端中运行了reboot命令。现在系统无法启动。重启后,登录界面没有显示出来,只有一个黑屏。请问我该如何修复这个问题。 - arilwan

您的/tmp目录已经溢出,因此在该目录中没有足够的磁盘空间来执行apt-get操作。
为了执行这个操作,您可以在终端会话中更改apt-get的tmp位置。
mkdir -p /home/<user>/tmp
export TMPDIR=/home/<user>/tmp

查看每个文件夹的索引节点数:
du * -s --inodes