我需要确定哪个进程正在磁盘上不间断写入。
我尝试运行prstat -t
以获取正在运行的进程列表,但我无法识别/找到它是哪个进程。
运行后df -k
,我可以看到磁盘给定路径上的空间不断减少。
在杀死所有可以在磁盘上写入的进程(并关闭所有外部连接)之后,仍然有一些东西在上面写入。
操作系统 Solaris 10
答案1
它不会显示实际的IO操作,但你也可以使用实用fuser
程序以任何方式识别使用文件系统的进程,即使是那些不会导致实际 IO 的进程,或者以无法追溯到特定进程的方式执行 IO(mmap()
文件就是其中之一,其中文件可以是mmap()
由多个进程完成):
概要
/usr/sbin/fuser [-c | -d | -f] [-nu] [-k | -s sig] files [ [- ] [-c | -d | -f] [-nu] [-k | -s sig] files] ...
描述
fusion 实用程序显示正在使用指定为参数的文件的进程的进程 ID。
每个进程 ID 后面都有一个字母代码。这些字母代码的解释如下。如果进程使用该文件作为
c 表示进程正在使用该文件作为其当前目录。
m 表示进程正在使用通过 mmap(2) 映射的文件。详细信息请参见 mmap(2)。
n 表示进程正在文件上持有非阻塞强制锁。
o 表示进程正在使用该文件作为打开的文件。
r 表示进程正在使用该文件作为其根目录。
t 表示进程正在使用该文件作为其文本文件。
y 表示进程正在使用该文件作为其控制终端。
例子:
假设您的主目录位于安装在的单独文件系统上/export/home
,这将显示在该文件系统上以任何方式使用文件的所有进程,包括那些不执行任何 IO 但在该文件系统中具有当前工作目录的进程以及有从该文件系统映射的文件内存:
fuser -c /export/home