我在笔记本电脑上使用 Fedora 12。我有 10GB 磁盘空间,其中 2GB 是可用的。 2-3 天的正常运行时间后,空间结束,我必须重新启动。重新启动后,我恢复了 2GB 可用空间。我怎样才能防止这种情况发生?
我主要使用 Firefox、Chrome、Gedit、Rhythmbox 和后台:httpd、mysqld、conky。内存:1GB,交换空间:1.2GB。
答案1
首先,您必须找出是什么在侵蚀您的空间。我建议您追踪增长到该大小的物理文件或目录。
最简单的方法是检查/
使用中的目录:(我建议将其运行为根)
# du -hs /* 2> /dev/null
4.2M /bin
25M /boot
204K /dev
6.7M /etc
19G /home
112M /lib
16K /lost+found
12K /media
16K /mnt
4.0K /multimedia
1018M /opt
0 /proc
15M /root
8.6M /sbin
12K /srv
4.2M /storage
0 /sys
108K /tmp
16G /usr
4.3G /var
现在,当计算机刚刚启动且尚未开始占用空间时运行该命令,并将输出保存在文件中 ( ~/record-space
)
$ sudo du -hs /* 2> /dev/null 1> ~/record-space
然后,当您的计算机接近“FULL”状态时,您可以再次运行该命令,将输出保存在第二个文件中。
$ sudo du -hs /* 2> /dev/null 1> ~/record-space2
现在您可以比较这两个文件(~/record-space
和~/record-space2
)以查看主目录有何不同......
我最喜欢的比较文件的方法是使用diff
:
$ diff ~/record-space{,2}
更新:请参阅吉尔对此答案的评论。
与其代替du -hs /*
,不如使用du -xsh /tmp/* /var/*/* ~/.*
。
答案2
如果您的可用磁盘空间低于某个阈值,某些发行版或桌面环境可能会显示警告;您可以按照以下方法自行拼凑。在终端中,输入crontab -e
(不是 root);这将弹出一个编辑器。输入以下行:
*/5 * * * * if [ "$(df -P / | awk 'NR==2 {print $4}')" -le 1048576 ]; then df /; fi
这意味着每五分钟 ( */5 * * * *
),如果可用磁盘空间 ( "$(df -P / | …)"
) 降至 ( [ … -le … ]
) 1048576KB (1GB) 以下,则向您发送一封包含可用磁盘空间的本地邮件(cron 将向您发送 的输出df /
)。
你可能会注意到“已使用”和“可用”两栏只占总数的95%;那是因为预留空间并且不对您的问题负责(预留金额不会随时间变化)。
最有可能占用磁盘空间的地方是/tmp
和/var
您的主目录(包括它们的子目录)。我第二斯特凡的建议设置基线du
输出并将其与磁盘已满时的输出进行比较。
如果启动时空间被释放,可能有多种原因。某些程序可能正在创建大型临时文件;也许这些文件在程序终止时被清理,也许它们在启动过程中被清理,也许它们在程序再次启动时被清理。您无法观察到的一种情况du
是,如果程序正在使用大文件,则它们被删除。当你在unix系统上删除一个文件时,首先只是文件名消失(文件被“取消链接”);仅当不再有对该文件的任何引用时,该文件的内容才会消失:既没有名称也没有打开该文件的进程。换句话说,如果程序创建一个大文件,打开它并删除它,则只有当程序关闭该文件时才会回收空间(这在程序终止时自动发生)。您无法使用 来查看已删除的文件du
,但可以使用 来查看它们lsof
(“我我st哦笔F”):
lsof | grep '(deleted)'
在 lsof 输出中,文件名之前的倒数第二个数字(即第 7 列)是文件大小。