Phi*_*ler 9 linux open-files files
我的情况是,一个特定的进程(在这种情况下,它是 Thunderbird)不时对用户输入做出反应一分钟左右。我发现iotop在这段时间内使用它,它向磁盘写入了很多内容,现在我想找出它写入哪个文件,但不幸的是iotop只提供每个进程的统计信息,而不是每个打开的文件(-描述符)。
我知道我可以用它lsof来找出进程当前打开了哪些文件,但当然 Thunderbird 已经打开了很多文件,所以这没有那么有用。iostat仅显示每个设备的统计信息。
这个问题只是随机发生的,它可能需要很长时间才能出现,所以我希望我不必跟踪 Thunderbird 并浏览长日志来找出哪个文件的写入次数最多。
如果您在进程挂起时将 strace 附加到该进程(您可以在备用终端中提前获取 pid 并将命令排队),它将显示阻塞写入的文件描述符。
简单的例子:
$ mkfifo tmp
$ cat /dev/urandom > tmp &
[1] 636226
# this will block on open until someone opens for reading
$ exec 4<tmp
# now it should be blocked trying to write
$ strace -p 636226
Process 636226 attached - interrupt to quit
write(1, "L!\f\335\330\27\374\360\212\244c\326\0\356j\374`\310C\30Z\362W\307\365Rv\244?o\225N"..., 4096 <unfinished ...>
^C
Process 636226 detached
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9034 次 |
| 最近记录: |