/
파일 시스템 이 포함 된 볼륨의 UUID를 어떻게 얻을 수 있습니까? 내가 찾은 가장 좋은 것은입니다 blkid -o list
. 그러나이 출력은 사람이 읽을 수 있고 구문 분석하기 어렵습니다. 더 좋은 방법이 있습니까?
시스템 별 템플릿으로 구성 관리를 매개 변수화해야합니다.
에 대한 참고 blkid
: 미래에 내 질문의 결과를 재사용 할 수 있습니다 사람들을 위해 잡았다 blkid
에서 이전 실행의 캐시 결과 /etc/blkid.tab
. 즉, blkid
루트가 아닌 사용자로 처음 실행 하면 데이터가 반환되지 않습니다. 또한 blkid
루트 실행 후 루트가 아닌 사용자로 실행하면 오래된 (부정확 한) 데이터가 반환됩니다.
답변
사용 findmnt
:
$ findmnt /
TARGET SOURCE FSTYPE OPTIONS
/ /dev/md127p1 ext4 rw,relatime,stripe=256,data=ordered
$ findmnt / -o UUID
UUID
046a554b-d9f5-4b23-82e6-ffaeb98284aa
$ findmnt / -o UUID -n
046a554b-d9f5-4b23-82e6-ffaeb98284aa
또한 정보 조회 방법 및 정보 표시 방법 (JSON 출력 포함)을 제어하는 여러 옵션이 있습니다. mount
패키지 의 일부 이므로 모든 우분투 설치에서 사용할 수 있습니다.
답변
다른 해결책 :
lsblk -nr -o UUID,MOUNTPOINT | grep -Po '.*(?= /$)'
-n
헤더를 억제합니다 (실제로 필요하지는 않지만 구문 분석에 더 안전합니다)-r
원시 출력을 만듭니다 (파싱하는 것이 더 안전합니다)-o UUID,MOUNTPOINT
필요한 정보 만 포함
답변
lsblk
명령을 사용하여 UUID를 출력 할 수 있지만 파티션의 장치 이름 (예 : / dev / sda2)이 필요합니다. df
명령 을 사용 하여 출력을 트리밍 하여이를 얻을 수 있습니다 . 명령 대체를 사용하여 장치 이름을에 지정하십시오 lsblk
. lsblk의 일반 출력에는 필요하지 않지만 UUID에 액세스하려면 sudo가 필요합니다.
sudo lsblk -n -o UUID "$(df -P / | tail -n1 | cut -d' ' -f1)"
답변
내가 생각해 낸 가장 좋은 해결책은
blkid -o list | awk '/\/[[:space:]]+/{ print $0 }' | tr -s ' ' | cut -d ' ' -f 4
최적이 아닌 것처럼 느껴지지만 작동합니다.
참고 : [[: space :]]는Space
답변
mountpoint
해당 파일 시스템의 현재 마운트 지점에 대한 값을 조정하십시오 .
dev="$(exec awk -v mountpoint='/' '($2 == mountpoint){ print $1; quit; }' /proc/mounts)" &&
sudo blkid -o export -- "$dev" | sed -ne 's/^UUID=//p'
답변
내가 사용하는 것은 다음과 같습니다.
sudo tune2fs -l $(df / | tail -1 |awk '{print $1}') |grep UUID|awk '{ print $3 }'
tune2fs는 e2fsprogs 패키지에 있으며 기본적으로 설치되어 있는지 기억할 수 없습니다.
sudo apt install e2fsprogs
설치되어 있지 않은 경우.
답변
14.04 및 16.04에서 작동하도록 테스트되었습니다.
항상 루트의 UUID를 생산해야하는 간단한 한 줄이 /
있다
export DRIVE = $ ( ” ‘{print $ 1}’의 grep ‘/’| awk -F”); blkid $ DRIVE | 컷 -d ‘ “‘-f2`
우리가 여기서하는 일은 경로 확장 기호로 사용될 /
때 일치하지 않도록 루트 기호를 양쪽의 공백과 일치시키기 위해 마운트의 출력을 grepping하는 것입니다. 장치 이름과 THAT를 환경 변수 $ DRIVE에 할당 한 다음 필드 구분 기호로 사용하여 파이프 스루 컷 의 출력을 사용하고 다른 모든 항목을 제거하는 두 번째 필드 만 선택하면 UUID 만 남습니다./
awk
blkid $DRIVE
"
참고 위의 명령에서 GREP은 ‘실제로 이후에 소속 된 것을 space/ space‘가 아닌 ‘/’이 나타나는한다.
이는 필요하지 않은 이점이 있으며 sudo
드라이브 장착 방법에 관계없이 적절한 결과를 반환합니다.
변수를 사용하지 않는 경우이 방법을 시도하기 전에 $ DRIVE 환경 변수를 echo $DRIVE
사용하지 않는 것이 빈 줄을 반환하는 것이 좋습니다.