我知道 Stack Exchange 网站上有很多帖子与我的问题类似,但我还没有找到一个能帮上忙的帖子。从下面的输出中你可以看到,df
我的/tmp
目录已经满了。以前我也遇到过这种情况,很容易就能发现是大文件导致了问题。
$ df -h /tmp/
Filesystem Size Used Avail Use% Mounted on
- 1.0M 1.0M 0 100% /tmp
这次没有大文件,事实上du
,这ls
将证实这一点
$ du -h /tmp/
0 /tmp/.ICE-unix
0 /tmp/.X11-unix
56K /tmp/
$ ls -lahtr
total 60K
drwxrwxrwt 2 root root 40 Mar 7 22:17 .X11-unix
drwxrwxrwt 2 root root 40 Mar 7 22:17 .ICE-unix
-rw------- 1 root root 1 Mar 9 09:37 fileVZLNrC
-rw------- 1 root root 0 May 1 14:02 file6lz1VS
-rw------- 1 root root 0 May 1 14:28 file7ELZD8
drwxr-xr-x 24 root root 4.0K Jun 27 10:45 ..
-rw-rw-r-- 1 vlc vlc 0 Jun 27 21:02 camp_report_log2
-rw-rw-r-- 1 vlc vlc 36 Jun 28 06:00 usage
-rw-rw-r-- 1 vlc vlc 0 Jun 28 06:00 load_span
-rw-r--r-- 1 root root 1 Jun 28 15:57 voa_somali.log
-rw-r--r-- 1 root root 1 Jun 28 15:57 vision_pm.log
-rw-r--r-- 1 root root 1 Jun 28 15:57 vision_am.log
-rw-r--r-- 1 root root 1 Jun 28 15:57 sc_serv.log
-rw-r--r-- 1 root root 1 Jun 28 15:57 scoop.log
-rw-r--r-- 1 root root 1 Jun 28 15:57 ranmase.log
-rw-r--r-- 1 root root 1 Jun 28 15:57 okazyon.log
-rw-r--r-- 1 root root 1 Jun 28 15:57 n4e.log
-rw-r--r-- 1 root root 1 Jun 28 15:57 kiskeya_sunday.log
-rw-r--r-- 1 root root 1 Jun 28 15:57 intersection.log
-rw-r--r-- 1 root root 1 Jun 28 15:57 ghana.log
-rw-r--r-- 1 root root 1 Jun 28 15:57 bbc_somali.log
drwxrwxrwt 4 root root 440 Jun 28 15:57 .
所以我仍然会收到类似这样的错误
$ crontab -e
/tmp/crontab.0kGihV/crontab: No space left on device
$ echo 'test' | mail -s 'test' [email protected]
mail: cannot send message: No space left on device
还有什么可能导致/tmp
目录填满?
答案1
/tmp 上可能存在无法取消链接的文件,因为有些进程仍有打开的句柄。您可以使用以下命令列出这些进程:
sudo lsof +D /tmp
当这些进程退出时,您应该能够回收 /tmp 中的空间。但是,除非您正在使用大约 512M 或更少空间的嵌入式系统,否则您可能可以承受更大的 /tmp。
如果您想要将 /tmp 安装在与 / 相同的驱动器上,只需从 /etc/fstab 中注释掉(在行首添加前导 #)包含 /tmp 的行,您需要重新安装相应的分区或重新启动并让系统重新安装所有内容以使更改生效。
为了将 /tmp 挂载到其自己的分区上,您需要提前创建正确大小的分区。幸运的是,/tmp 中的内容并不珍贵,因此创建一个新分区、更新 fstab 并重新启动就足够了。
答案2
嗯,考虑到您为 /tmp 指定的分区大小只有 1MB,我想您的系统能够运行已经很幸运了。
您可能应该考虑扩大 /tmp 分区,或者允许操作系统将根分区中的空间用于 /tmp。最后,您可以通过注释掉 /etc/fstab 中挂载 /tmp 分区的所有内容来实现。