[英]watch file size on 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}'
但是這個命令不會返回任何結果
你把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
我希望這會有所幫助:)
您需要引用管道,以便在 watch
范圍內完成。
watch -n 5 "ls -lh club_prod.sql | awk '{print \$5}'"
另請注意\\
添加到\\$5
因為外部引號現在是雙引號,其中擴展了$
-variables。 (其他引用方法通常比這更丑陋。)
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'
最后兩列的產品是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 - marcelo@m2j.com.br
# 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.