Каков эффективный способ преобразования удобочитаемых -размеров в количество байтов?

Использованиеsed:

 sed -i 's/^www\.//' file

Использованиеawk:

 awk '{gsub("^www\\.", "");print}' file
14
04.06.2021, 01:26
2 ответа

Не существует хорошего способа преобразовать zfsчеловекочитаемые -числа в фактические байты. Читаемые человеком -числа округлены и поэтому неточны.

Если вам нужны точные числа, используйте параметр -p(машинный анализ ), и вывод будет в байтах, которые вы можете анализировать и форматировать по своему усмотрению.

$ zfs list tank/var; zfs list -p tank/var
NAME       USED  AVAIL     REFER  MOUNTPOINT
tank/var  8.33G   387G     6.90G  /var
NAME            USED         AVAIL       REFER  MOUNTPOINT
tank/var  8948584448  415137447936  7407120384  /var

Но синтаксический анализ zfsудобочитаемого -вывода и преобразование в "точные" числа невозможен. Поскольку удобочитаемые числа указаны только для (скажем )трех значащих цифр, ваша «точная» экстраполяция также будет точной только до трех цифр.

TiB=$((2**40))
GiB=$((2**30))

# MINFREE=$((50*$TiB)) # 50 TiB
MINFREE=$((50*$GiB))   # 50 GiB

POOLFREE=$(zpool list -Hpo free "$POOLNAME") #Free in bytes

if [ "$POOLFREE" -lt "$MINFREE" ]; then
  printf "alert\n"
else
  printf "no alert -- %d bytes free >= %d byte minimum\n" "$POOLFREE" "$MINFREE"
fi
41
28.07.2021, 11:27

zpool listможет предоставить числа в байтах. например. перечисление трех пулов (15T, 29T и 416G )на моем основном сервере zfs.

Во-первых, без -Hи-p:

$ zpool list -o name,size,alloc,free,capacity
NAME     SIZE  ALLOC   FREE    CAP
backup  14.5T  6.15T  8.40T    42%
export    29T  17.8T  11.2T    61%
ganesh   416G   169G   247G    40%

И снова с -Hи-p

$ zpool list -H -p -o name,size,alloc,free,capacity
backup  15994458210304  6763872280576   9230585929728   42
export  31885837205504  19592775573504  12293061632000  61
ganesh  446676598784    181604904960    265071693824    40

Вывод разделен табуляцией, поэтому его легко обрабатывать с помощью awkили cutили чего угодно, (даже оболочки во время цикла чтения, если вы настаиваете). Поле capacityпредставляет собой используемый процент, поэтому оно особенно полезно, если вы хотите отправить предупреждение по электронной почте, если пул становится менее 10% или 20% свободным.

  • -HэтоScripted mode. Do not display headers, and separate fields by a single tab instead of arbitrary space.
  • -pпечатает «поддающийся анализу» формат, а не «читаемый человеком» формат (, т.е. байты)

Кстати, в последних версиях ZFS справочные страницы zfsи zpoolразделены на отдельные страницы для подчиненных -команд, свойств, концепций и т. д. Если это то, что вы используете, см. справочные страницы. для zpool-listи zpoolpropsдля более подробной информации. В противном случае просто man zpool.

9
28.07.2021, 11:27

Теги

Похожие вопросы