単一のファイルのサイズの増加を監視したいので、次のコマンドを使用します。
texai@maelstrom ~$ ls -lh club_prod.sql | awk '{print $5}'
116M
今、私は5秒ごとにその結果を見たいので:
texai@maelstrom ~$ watch -n 5 ls -lh club_prod.sql | awk '{print $5}'
しかし、このコマンドは結果を返しません
watch
の出力をawk
にパイプしています。コマンドラインを簡略化すると、次のようになります。
watch <some arguments> | awk '{print $5}'
それはあなたが望むものではありません。試してください:
watch -n 5 "ls -lh club_prod.sql | awk '{print \$5}'"
watch -n 5 "du -h club_prod.sql"
正確には関連していませんが、あるファイルの成長率を監視したい場合は、次のコマンドを使用できます。
tail -f yourfile.txt | pv > /dev/null
tail -f
-ファイルに追加されたデータを出力しますpv
-パイプを通るデータフローを測定する> /dev/null
-標準出力は破棄されます注:時々pv
がプリインストールされていない場合があります
これが誰かを助けることを願っています:)
withinwatch
となるように、パイプラインを引用する必要があります。
watch -n 5 "ls -lh club_prod.sql | awk '{print \$5}'"
\
に追加された\$5
にも注意してください。これは、外側の引用符が$
-変数が展開される二重引用符になったためです。 (他の引用方法は一般にこれよりもいです。)
watch -n 5 "ls -lh club_prod.sql | awk '{print \$5}'"
watch
の使用法は正しいですが、ls
の使用法は避けます。 stat
またはdu
の使用をお勧めしますが、これはあなたが望むものに依存します。
du
:ドライブのスペースを占有したい場合stat
:ファイルに含まれるバイト数が必要な場合(ファイルから読み取ることができるバイト数)圧縮ファイルシステム、またはスパースファイル、内部フラグメンテーション、間接ブロックの処理を使用することを想像してください...
どちらの場合も、結果は次のようになります。
$ watch -n 5 'stat --printf "%s\n" file'
$ watch -n 5 'du -B1 file'
両方の結果は、実際にstat
を使用して単一のコマンドで取得できます。
$ watch -n 5 'stat --printf "%s %b %B\n" file'
最後の2列の積は、du
の結果です。
ファイルの高速で詳細な成長監視のために、0.1秒ごと:
watch -n 0.1 "ls -l /mnt/some/file | awk '{print \$5}' | sed -re ' :rep ; s/([0-9])([0-9]{3})($|[^0-9])/\1,\2\3/ ; t rep '"
これにより、62,673,539,072のようなものが生成されます。
これは次のように実行できます。
while true; do
du -s **file_or_directory**
sleep **time_interval**
done
#!/bin/bash
# Watch File Size and Growth
# Author: Marcelo Pacheco - [email protected]
# Syntax: watchfilesize filetomonitor
nm="$1"
while true
do
sz=$(stat -c %s "$nm")
sleep 1m
sz1=$(stat -c %s "$nm")
echo Growth: $(((sz1-sz)/1024))KB/min Size: $((sz1/1024/1024))MB
sz=$sz1
done