Kir Kolyshkin (k001) wrote,
Kir Kolyshkin
k001

Category:

Фундаментальные проблемы парсинга df

Век живи, век учись[, дураком помрёшь].

Взгляните на вывод команды df:
$ df /
Filesystem                    1K-blocks     Used Available Use% Mounted on
/dev/mapper/vg_kirpad-lv_root  52765228 40972332   9105920  82% /

Казалось бы, чтобы отсюда узнать, сколько всего на файловой системе блоков, нужно взять второе поле из последней строки, например, вот так:
$ df / | awk 'END {print $2}'
52765228

Всё работает. Ан нет. В природе, оказываются, существуют хосты, которые печатают вот так:
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/volume3_part5
                     162693204    230624 148202134   2% /

И с использованием вышеприведённой конструкции мы получаем 230624 вместо 162693204.

Правильное решение -- вероятно, использовать stat -f /, надеясь, что он не оборудован такими выкрутасами, как df.

Костыль -- считать поля с конца, а не с начала, то есть
awk 'END {print $(NF-4)}'.
Tags: linux, work
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 8 comments