parted
kann freien Speicherplatz drucken. Beispiel (Ich habe absichtlich ein kompliziertes ausgewählt):
# parted /dev/sda unit s print free
[...]
Number Start End Size Type File system Flags
63s 2047s 1985s Free Space
1 2048s 4196351s 4194304s primary fat32 lba
4196352s 4198399s 2048s Free Space
2 4198400s 6295551s 2097152s primary ext2 boot
6295552s 6297599s 2048s Free Space
3 6297600s 27269119s 20971520s primary ext2
27269120s 27271167s 2048s Free Space
4 27271168s 31115263s 3844096s extended lba
5 27273216s 29192191s 1918976s logical ext2
6 29194240s 31115263s 1921024s logical ext2
31115264s 31116287s 1024s Free Space
Wie Sie sehen, erhalten Sie direkt die Position und Größe der Partition, die Sie möglicherweise erstellen können, dh die allerletzte Zeile, in der steht Free Space
. Sie können eine Partition erstellen, die bei 31115264 beginnt und bei 31116287 endet.
Ohne die Gefahr wäre die erweiterte Partition nicht groß genug!
Aber vielleicht verwenden Sie bereits GPT, wenn Sie nicht an solchen Komplikationen leiden.
Das Auffinden der Zahlen sollte einfach genug sein.
function make_partition
{
parted -s "$1" unit s mkpart primary "$2" "$3"
}
make_partition /dev/sda `parted /dev/sda unit s print free | grep 'Free Space' | tail -n 1`
Oder etwas ähnliches. (Natürlich möchten Sie hier noch einige Gesundheitsprüfungen durchführen.)
@swisscheese machte einen guten Kommentar in der anderen Antwort, ich wusste nicht, parted
angeboten parse freundliche Ausgabe. Sie können sich stattdessen dafür entscheiden. Beispiel für das Ergreifen des letzten größten freien:
# parted -m /dev/sda unit s print free | grep 'free;' | sort -t : -k 4n -k 2n | tail -n 1
1:27269120s:27271167s:2048s:free;
Ob dies für Ihre Situation zutrifft (in meinem Beispiel konnten Sie dort auch keine Partition erstellen, sie ist bereits voll), müssen Sie selbst herausfinden. :) :)