ubuntu服务器慢慢填满

前端之家收集整理的这篇文章主要介绍了ubuntu服务器慢慢填满前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
前几天我们的samba服务器(ubuntu 8.04 ltr)份额填满了,但是当我去看它时,我看不到任何股票对他们的影响很大

我们有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一般都很新,所以如果不能很好地解释,我会道歉)

(这是一个Linux专注的答案.其他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中显示的参数是什么),以防您需要重新启动它(您可能需要参考该软件的文档).

原文链接:https://www.f2er.com/ubuntu/348160.html

猜你在找的Ubuntu相关文章