我们有5个团体股份
然后每个用户都有一个单独的共享
一个用户有22gig的东西,其他几个有10-20mb的东西,其他人都是空的
所以也许像26gigs一样
我昨天删除了一些文件,释放了大约250mb的空间
今天,当我检查它,它已经完全满了,我删除了一些旧的文件,并释放了大约170mb的东西,但我可以看到它在自由空间慢慢蠕动.
我继续运行df -h
Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda1 241690180 229340500 169200 100% / varrun 257632 260 257372 1% /var/run varlock 257632 0 257632 0% /var/lock udev 257632 72 257560 1% /dev devshm 257632 52 257580 1% /dev/shm lrm 257632 40000 217632 16% /lib/modules/2.6.24-28-generic
/挥发性
我该怎么做才能找到占据我母亲这么多钱的最新资料?
(我对unix一般都很新,所以如果不能很好地解释,我会道歉)
有两个与您的问题相关的信息:(1)哪些文件正在填满您的文件系统,以及(2)哪些进程正在写入这些文件.
笔记
下面,当我将$字符放入命令时,这可能是一个占位符,您需要替换实际值.希望,显而易见的是在哪里以及不在哪里.
哪个档案?
请注意,大多数文件系统类型中确实有两种资源可供单个文件使用:元数据(例如inode)和实际数据.您可以使用以下命令查看inode的数量(在Google中搜索定义,但它们是构成文件的结构的“指针”):
df -i
……正如您所知,这样的事情将显示真实数据所使用的空间:
df -h
另请注意,文件系统空间可以由磁盘上不存在的文件占用.某些进程仍然处于打开状态,但已被删除(我们将在下面介绍).
一旦确定了完整的文件系统,就需要开始寻找大量的小文件,一些大文件,或两者兼而有之.耗尽元数据资源通常是由于拥有大量小文件造成的,而实际数据资源的耗尽通常是由一些大文件引起的.我喜欢使用此命令来帮助查找大文件:
sudo find $file_system -mount -ls | awk '{print $7,$11}' | sort -rn > $output
…以及此命令可帮助查找包含大量小文件的目录(Update ::添加了null终止以改进文件名处理):
sudo find . -mount -print0 | xargs -0n 1 dirname | sort | uniq -c | sort -rn > $output
…请注意,这些命令可能需要一段时间才能运行,并且需要执行大量I / O操作.运行后,您可以通过$output读取以查找有问题的文件或目录.每个的名称和位置可能会提示您数据的来源,但需要一些Linux经验.
一旦你确定了违法者,你就可以通过$file来摆脱这个问题.
哪个流程?
fuser -c $file_system 2>/dev/null
…它将告诉您具有给定文件系统的打开文件描述符(文件和网络套接字)的进程的PID(2> / dev / null部分删除了一些您不需要的信息).您可能只能从这些PID中推断出哪个进程正在填满您的文件系统.使用以下方法搜索进程:
ps -ef | grep $pid
您也可以尝试运行此命令,它将为您提供更多详细信息(并帮助识别磁盘上没有相应文件名的打开文件 – 我在上面提到过):
sudo lsof $file_system | grep $directory_filling_up
…如果您已从fuser命令识别出可疑PID,则可以执行以下操作:
sudo lsof -p $pid
fuser和lsof的问题在于它们仅在您运行命令时为您提供系统的快照.如果违规过程在你运行时没有写入,那你就不走运了.你可以通过反复运行它们并保存输出来解决这个问题.这将需要通过输出读取以查找模式,或编写程序来为您完成.另一种方法是使用像SystemTap这样的工具.SystemTap允许您捕获各种有用的信息,并且是“可编程的”.它甚至附带了一些示例源文件,可以让您查看在某段时间内哪些进程正在写入哪些文件.这将是完美的,但它是一个高级工具,需要大量的Linux知识.
一旦确定了违规流程,就可以杀死(并重启它们).如果该进程与操作系统或一些包装良好的软件相关联,可能会有一种重新启动它们的机制,但它将取决于您的Linux发行版(我认为Ubuntu将允许您运行类似/etc/init.d的内容) / $init_script restart,但你必须检查你的发行版的文档).否则,你可以使用kill $pid或kill -9 $pid杀死它,如果它没有表现的话.请注意该进程是如何运行的(例如ps -ef中显示的参数是什么),以防您需要重新启动它(您可能需要参考该软件的文档).