簡體   English   中英

在linux上查看文件大小

[英]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 我建議使用statdu ,但這取決於你想要什么。

  • 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM