UUID에서 장치 마운트 지점을 얻는 효율적인 방법

UUID에서 장치 마운트 지점을 얻는 효율적인 방법

제가 작업 중인 스크립트에서는 UUID 변수를 사용하여 장치가 연결된 현재 마운트 지점을 가져와야 합니다. 제가 생각해낸 해결책은 이렇습니다.

UUID='fc70ae3d-65e7-4437-a371-b237c8ca3f56h'
MNTPNT=$(lsblk -o +UUID | grep ${UUID} | tr -s ' ' | cut -d ' ' -f 7)

명령을 실행한 후 MNTPNT 변수는 현재 마운트 지점을 예상대로 저장합니다.. 하지만 이는 매우 광범위한 명령이므로 동일한 목표를 달성하려면 더 효율적인 방법이 있어야 한다고 생각하지 않을 수 없습니다.

더 나은 해결책을 생각해내는 것이 가능합니까? 이는 주로 최적화 문제입니다. 어떤 통찰력이라도 미리 감사드립니다.

답변1

findmnt -noTARGET "/dev/disk/by-uuid/$UUID"

grep "$(stat -Lc '%#t %#T' "/dev/disk/by-uuid/$UUID" | xargs printf '%d:%d')" /proc/self/mountinfo

awk -v dev="$(stat -Lc '%#t %#T' "/dev/disk/by-uuid/$UUID" | xargs printf '%d:%d')" '$3~dev{print$5}' /proc/self/mountinfo

바인딩 설치를 다듬으려면 다음을 수행하십시오.

awk -v dev="$(stat -Lc '%#t %#T' "/dev/disk/by-uuid/$UUID" | xargs printf '%d:%d')" '$3~dev&&$4=="/"{print$5}' /proc/self/mountinfo

장비는 여러 위치에 설치될 수 있다는 점을 명심하십시오.

메이저, 마이너 숫자를 인쇄할 수 없어서 안타깝습니다 $(stat ... | xargs printf).stat(1)소수. 구문 분석 전용 출력이 ls -Hl더 좋고 이식성이 더 좋을 수 있습니다.

답변2

df | grep "^$(readlink -f /dev/disk/by-uuid/$UUID) " |sed 's/^[^%]*% \+//'

이는 마운트 하위 디렉터리에 바인드 마운트가 있는 경우에도 작동하며, 이로 인해 다른 잠재적인 솔루션이 혼동될 수 있습니다.

(편집:)
마운트 지점에 공백을 허용합니다.

(편집 2:)
마운트 지점에는 "%"가 포함될 수도 있습니다.

관련 정보