如何测量由于Linux中给定进程的活动而导致的净使用磁盘空间变化?

时间:2011-02-04 17:07:01

标签: linux monitoring diskspace

我想监控正在运行的进程的磁盘空间要求。理想情况下,我希望能够指向一个进程,并找出可归因于它的已用磁盘空间的净更改。在Linux中有一种简单的方法吗? (我很确定使用DTrace在Solaris中执行此操作是可行的,但可能不是很容易)

3 个答案:

答案 0 :(得分:2)

可能你必须对它进行ptrace(或者让你为你做这个并解析输出),然后尝试找出正在使用的光盘。

这非常重要,因为您的跟踪过程需要了解哪些文件操作使用磁盘空间 - 并且没有竞争条件。但是,您可以进行近似。

相当多的东西都会占用磁盘空间,因为大多数Linux文件系统都支持“漏洞”。我想你也可以计算漏洞用于会计目的。

另一个问题是知道什么文件系统操作释放了磁盘空间 - 例如,打开文件进行写入可能会在某些情况下截断它。这显然释放了空间。同样,如果文件重命名为现有文件,则重命名文件可以释放空间。

另一个问题是调用辅助进程来执行操作的进程 - 例如,如果myprog执行系统(“rm -rf somedir”)。

同样很难知道文件何时被完全删除,因为它可能会从文件系统中删除但仍由另一个进程打开。

快乐的黑客攻击:)

答案 1 :(得分:0)

如果您知道要监控的流程的PID,您会在/proc/<PID>中找到有关它的大量信息。

文件/proc/<PID>/io包含有关进程读取和写入的字节的统计信息,它应该是您正在寻找的内容。

此外,在/proc/<PID>/fd/中,您可以找到您的流程打开的所有文件的链接,因此您可以监控它们。

答案 2 :(得分:0)

有适用于Linux的Dtrace

http://librenix.com/?inode=13584

Ashitosh