web-dev-qa-db-ja.com

Linuxでのファイルサイズの監視

単一のファイルのサイズの増加を監視したいので、次のコマンドを使用します。

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}'

しかし、このコマンドは結果を返しません

36
texai

watchの出力をawkにパイプしています。コマンドラインを簡略化すると、次のようになります。

 watch <some arguments> | awk '{print $5}'

それはあなたが望むものではありません。試してください:

watch -n 5 "ls -lh club_prod.sql | awk '{print \$5}'"
55
larsks
watch -n 5 "du -h club_prod.sql"
38
tamasgal

正確には関連していませんが、あるファイルの成長率を監視したい場合は、次のコマンドを使用できます。

tail -f yourfile.txt | pv > /dev/null

  • tail -f-ファイルに追加されたデータを出力します
  • pv-パイプを通るデータフローを測定する
  • > /dev/null-標準出力は破棄されます

注:時々pvがプリインストールされていない場合があります

これが誰かを助けることを願っています:)

14
Jacajack

withinwatchとなるように、パイプラインを引用する必要があります。

watch -n 5 "ls -lh club_prod.sql | awk '{print \$5}'"

\に追加された\$5にも注意してください。これは、外側の引用符が$-変数が展開される二重引用符になったためです。 (他の引用方法は一般にこれよりもいです。)

7
geekosaur
watch -n 5 "ls -lh club_prod.sql | awk '{print \$5}'"
4
myki

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の結果です。

2
kvantour

ファイルの高速で詳細な成長監視のために、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のようなものが生成されます。

1
Osiris

これは次のように実行できます。

while true; do
  du -s **file_or_directory**
 sleep **time_interval**
done
0
Punja Solanki
#!/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
0
Marcelo Pacheco