에 디스크가 있다고 가정해 보겠습니다 /dev/DISK_NAME
. n
이 디스크의 6번째 파티션을 찾는 명령어가 있는지 궁금합니다 .
이런 일이 가능해야 할 것 같습니다 lsblk
. 내가 생각할 수 있는 최선은 다음과 같습니다.
lsblk -nlpo NAME,TYPE /dev/DISK_NAME | awk '/part$/ {print $1}' | grep "[^0-9]n$"
여기서 n
마지막 grep은 문제의 파티션 번호를 나타냅니다.
위 명령은 현재 내가 사용하고 있는 아치 리눅스 머신에 적용되며, DISK_NAME=sda
그 출력은 lsblk -nlpo NAME,TYPE
다음과 같습니다.
/dev/sda disk
/dev/sda1 part
/dev/sda2 part
/dev/sda3 part
/dev/sda5 part
DISK_NAME=nvme0n1
내 명령은 출력이 lsblk -nlpo NAME,TYPE
다음 과 같은 아치 Linux 시스템에서도 작동합니다.
/dev/nvme0n1 disk
/dev/nvme0n1p1 part
/dev/nvme0n1p2 part
하지만 이것은 다소 구식으로 느껴지며 임의의 디스크에서 작동할지 확신할 수 없습니다.
이를 수행하는 더 좋은 방법이 있습니까?
답변1
이것이 사실이라는 보장은 없습니다 sda1
. sda4와 sda5만 있는 SSD가 있습니다. 그렇다면 첫 번째 파티션은 시작 LBA가 가장 낮은 파티션이 될까요?
아니면 파티션 테이블의 첫 번째 항목일까요? 에 따르면 parted -l
,
...
Number Start End Size File system Name Flags
2 316MB 333GB 333GB ext4 /mnt/backup
3 333GB 791GB 457GB ext4 /mnt/filestore
4 791GB 832GB 41.9GB ext4 /run/timeshift/backup
1 832GB 841GB 8590MB ext4 /mnt/music
첫 번째 파티션은 어느 것인가요? 맞나요?2(LBA가 가장 낮음) 또는1(파티션 번호가 가장 낮습니다).
고대 fdisk -l
명령을 선호하는 경우 [가장 낮은 번호의 파티션이 먼저 오도록] 파티션 테이블을 정렬합니다.
답변2
lsblk
이를 달성하기 위해 JSON 출력과 도구를 사용할 수 있습니다 jq
. IMHO는 덜 해킹된 것처럼 보입니다.
lsblk -J ${disk} | jq ".blockdevices[0].children[${partiton_number}].name"