Подтвердить что ты не робот

Размер файла просмотра на linux

Я хочу посмотреть растущий размер одного файла, поэтому я использую эту команду:

[email protected] ~$ ls -lh club_prod.sql | awk '{print $5}'
116M

Теперь я хочу посмотреть этот результат каждые 5 секунд так:

[email protected] ~$ watch -n 5 ls -lh club_prod.sql | awk '{print $5}'

но эта команда не возвращает никакого результата

4b9b3361

Ответ 1

Вы передаете вывод watch в awk. Если вы упростите свою командную строку, то у вас есть:

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

Это не то, что вы хотите. Попробуйте:

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

Ответ 2

watch -n 5 "du -h club_prod.sql"

Ответ 3

Не совсем связано, но если вы хотите отслеживать скорость роста какого-либо файла, вы можете использовать следующую команду:

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

  • tail -f - выводит данные, добавленные в файл
  • pv - измеряет поток данных через канал
  • >/dev/null - стандартный вывод отбрасывается

Примечание: иногда pv может быть не предустановлен

Надеюсь, это кому-нибудь поможет :)

Ответ 4

Вам нужно процитировать конвейер так, чтобы он выполнялся в пределах watch.

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

Обратите внимание также, что \ добавлен в \$5, потому что внешние кавычки теперь являются двойными кавычками, в которых $ -переменные расширяются. (Другие методы цитирования, как правило, более уродливые, чем это.)

Ответ 5

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

Ответ 6

Использование 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.

Ответ 7

Для быстрого детального просмотра роста файла каждые 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.

Ответ 8

Вы можете выполнить это так:

while true; do
  du -s **file_or_directory**
 sleep **time_interval**
done

Ответ 9

#!/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