我试图跟踪过多的磁盘写入来自何处,无论是通过邮件传入、数据库写入、日志还是其他来源。服务器上大约有 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
。