按目录监控磁盘写入

按目录监控磁盘写入

我试图跟踪过多的磁盘写入来自何处,无论是通过邮件传入、数据库写入、日志还是其他来源。服务器上大约有 75 个帐户,有些是活跃的,有些不是。

我可以执行任何类型的磁盘 I/O 命令来指定正在进行磁盘写入的目录吗?如果它是数据库写入,我希望我会看到它通过/var/lib/mysql/that_database_name

- 添加 -

我依稀记得大约两年前,我执行了一些命令,类似于tail -f我观看写入的命令,然后我思考指定的文件夹。如果我跟踪磁盘写入日志(如果存在这样的事情),那么它的位置或其以这种格式的访问将实现我想要的。

答案1

你可能会想法特拉斯,它可以监视对文件系统的所有写入,例如:

$ sudo fatrace -f W 
chrome(19909): W /home/meuh/.config/google-chrome/Default/Current Session
bash(2777): CW /home/meuh/.bashhistory
emacs(2100): CW /home/meuh/bin/emacs/.emacs.desktop
auditd(711): W /var/log/audit/audit.log
rsyslogd(762): W /var/log/secure

-f W输出限制为任何写入操作,列出可执行文件、pid 和写入的文件。

另一种可能性是iosnoop来自布伦丹·D·格雷格的性能工具它提供了写入磁盘的块的低级信息:

$ sudo perf-tools-master/bin/iosnoop
Tracing block I/O. Ctrl-C to end.
COMM         PID    TYPE DEV      BLOCK        BYTES     LATms
/usr/bin/mon 31456  R    8,0      9741888      4096       2.14
/usr/bin/mon 31456  R    8,0      12904784     4096       1.43
jbd2/sda3-41 416    WS   8,0      130618232    65536      1.89
jbd2/sda3-41 416    WS   8,0      210006528    8192       1.94
<...>        288    WS   8,0      129710104    61440      1.85
<idle>       0      WS   8,0      129710224    4096       0.36
cat          32111  WS   8,0      10443000     4096       0.35

如果您只想观看几组文件,另一种可能性是inotify等待,例如:

$ inotifywait -m -e modify -r /tmp
Setting up watches.  Beware: since -r was given, this may take a while!
Watches established.
/tmp/ MODIFY myfile

-r向下递归给定目录的。这设置起来成本很高,并且默认情况下用户仅限于 8192 个手表,但您可以在 中更改此设置/proc/sys/fs/inotify/max_user_watches

相关内容