Я пытаюсь создать скрипт bash, который создаст новый раздел с файловой системой на диске с существующими разделами.
Похоже, что создавать разделы легко с помощью parted, но вам нужно знать, где начинать и останавливать новый раздел, и именно здесь у меня возникают проблемы.
Я не хочу полагаться на диск, имеющий разделы в определенной позиции / размере. То есть я хочу создать новый раздел, начинающийся сразу после последнего существующего. Я хочу иметь возможность создать раздел либо фиксированного размера, либо заполнить оставшееся пространство.
В Bash есть ли надежный способ определения
а) конечная позиция последнего раздела и
б) оставшееся неразделенное пространство после последнего раздела?
Ответы:
parted
можно распечатать свободное место. Пример (я специально выбрал сложный):Как вы можете видеть, это дает вам непосредственно положение и размер раздела, который вы можете создать, то есть самую последнюю строку, которая говорит
Free Space
. Вы можете создать раздел, начинающийся с 31115264 и заканчивающийся 31116287.Если бы не ловушка, расширенный раздел недостаточно велик!
Но, может быть, вы уже используете GPT, где вы не страдаете от таких осложнений.
Захватить цифры должно быть достаточно легко.
Или что-то подобное. (Естественно, вы хотели бы сделать еще несколько проверок здравомыслия здесь.)
@swisscheese сделал хороший комментарий в другом ответе, я не знал,
parted
предлагал парс-дружественный вывод. Вы можете использовать это вместо этого. Пример для получения последнего по величине бесплатного:Применимо ли это к вашей ситуации (в моем примере вы тоже не могли создать там раздел, он уже полностью заполнен) - это то, что вы должны выяснить сами. :)
источник
parted -m $disk unit s print free | grep "free;" | tail -n 1 | awk -F':' '{print $2 " " $3}'
Это просто,
mkparted
есть--list
опция, вам нужно использоватьawk
и--list
получить последний раздел, а затем использоватьmkpart part-type [fs-type] start end
,Но твой ответ:
Сначала вы должны получить все разделы и с:
Заметки:
GB
вMG
.variable
-s
в своемparted command
окончательном сценарии.Если у меня есть время, завершите этот сценарий, извините, что не успели.
источник