web-dev-qa-db-ja.com

最近更新されたファイルを知る方法

Iostat -x 1を実行すると、5MBから10MBの書き込みがときどき大きくなります。

どのファイルが書き込まれていますか?

たとえば、最近作成された5MBを超えるサイズのファイルを確認したいと思います。

どうすればいいですか?

2
user4951

/ pathの下でX分以内に変更されたファイルを検索します

find /path -cmin -X

Sign before minute:
    + more than X minutes / over X minutes
    - less than X minutes / within X minutes
   (no sign) exact

例:過去30分以内に変更された/ var/log(サブディレクトリを含む)内のすべてのファイルを検索する

find /var/log -cmin -30

/ pathの下でサイズが大きいXのファイルを検索します

find /path -size +X<unit>

Sign before size:
    + larger than
    - less than
   (no sign) exact

<unit> :
    b = block (default,512byte)
    c = byte
    w = Word (2-byte)
    k = kbyte
    M = Mbyte
    G = Gbyte

例:/ var/log(サブディレクトリを含む)内の50kより大きいすべてのファイルを検索します

find /var/log -size +50k

コンバイン

例:過去30分以内に変更された50kより大きい/ var/log(サブディレクトリを含む)内のすべてのファイルを検索する

find /var/log -cmin -30 -size +50k

結果に50kを含めるにしたい場合は、に変更します。

find /var/log -cmin -30 -size +49k

[〜#〜] ps [〜#〜]find / .....は時間がかかるだけでなく、ディレクトリ(/ dev、/ sys、/ proc、 ...)一般的に検索には適していません。

6
John Siu

findを使用すると、ファイルシステム上のファイルを積極的に検索し、それらのタイムスタンプを信頼する必要があります。

最近のLinuxシステムの代替は inotify です。その場合、カーネルはファイルシステムの変更が発生したときにそれを監視し、たとえばinotifywait -mを使用してそれらを照会できます。それはあなたにリアルタイムで何が起こっているかについての良い考えを与えるはずです。

大規模なディレクトリツリーを再帰的に監視する場合、inotifyアプローチはうまく機能しません。その場合、findはどのディレクトリを監視するかを示します。

1
michas