Jika saya memiliki UUID partisi drive, bagaimana saya mencari tahu apakah sudah terpasang atau tidak, menggunakan baris perintah?
tune2fs
.
tune2fs -U random /dev/sdxx
. Tetapi ini tidak akan bekerja untuk semua jenis partisi.
Jika saya memiliki UUID partisi drive, bagaimana saya mencari tahu apakah sudah terpasang atau tidak, menggunakan baris perintah?
tune2fs
.
tune2fs -U random /dev/sdxx
. Tetapi ini tidak akan bekerja untuk semua jenis partisi.
Jawaban:
lsblk
mungkin membantu. Ini dapat mencetak hanya UUID dan titik mount, jadi, mengingat UUID, lihat saja apakah titik mount tidak kosong:
uuid=foo
lsblk -o UUID,MOUNTPOINT | awk -v u="$uuid" '$1 == u {print $2}'
Begitu:
uuid=foo
mountpoint=$(lsblk -o UUID,MOUNTPOINT | awk -v u="$uuid" '$1 == u {print $2}')
if [[ -n $mountpoint ]]
then
echo mounted
else
echo not mounted
fi
Karena lbslk
dapat bertindak pada perangkat tertentu, Anda juga dapat melakukan:
mountpoint=$(lsblk -o MOUNTPOINT "/dev/disk/by-uuid/$uuid" | awk 'NR==2')
Dengan metode pertama, tidak akan ada kesalahan jika UUID itu tidak dari disk yang saat ini terhubung. Dengan metode kedua, lsblk
akan keluar kesalahan jika /dev/disk/by-uuid/$uuid
tidak ada.
lsblk -o UUID,SIZE,MOUNTPOINT
Jika Anda hanya ingin satu baris dengan UUID dan mountpoint Anda ($ UUID mewakili UUID Anda):
lsblk -o UUID,MOUNTPOINT|grep "$UUID"
Titik pemasangan akan kosong jika tidak di-mount. Coba lsblk -h
untuk lebih banyak opsi.
Gunakan awk
untuk mencetak hasilnya. jika NF
(Jumlah bidang) lebih dari satu itu berarti memiliki titik mount:
lsblk -o UUID,MOUNTPOINT|grep "$UUID"|awk '{if (NF>1) print $1" is mounted"; else print $1" is unmounted";}'
Jika Anda ingin detailnya dari mount
for uuid in /dev/disk/by-uuid/*; do if [[ "$uuid" =~ .*your-UUID-here.* ]]; then echo $(mount | grep "$(readlink -e "$uuid")") ; fi; done
ganti your-UUID-here
dengan UUID Anda
lebih mudah dibaca:
for uuid in /dev/disk/by-uuid/*; do
if [[ "$uuid" =~ .*your-UUID-here.* ]]
then echo $(mount | grep "$(readlink -e "$uuid")")
fi
done
contoh output:
/dev/mmcblk1p2 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
Anda bisa membuatnya memeriksa bahwa string tidak null dan echo "dipasang":
for uuid in /dev/disk/by-uuid/*; do if [[ "$uuid" =~ .*your-UUID-here.* ]]; then if [[ $(mount | grep "$(readlink -e "$uuid")") ]]; then echo "mounted"; fi; fi; done
tetapi yang lain memberi cara yang lebih baik untuk melakukan itu :)
Ubuntu menggunakan UDisks2
daemon, yang mengumpulkan banyak informasi tentang sistem file, dan kita dapat menggunakan udisksctl
dan memfilter outputnya untuk menemukan cara cepat dan kotor untuk menemukan info yang kita butuhkan:
udisksctl dump | python -c 'import sys;lines = [l.strip() for l in sys.stdin if " UUID" in l or " MountPoints:" in l];print "\n".join(lines)'
Apa yang Anda lihat di atas, pada dasarnya akan mencetak UUID dari filesystem dan mountpoint-nya. Dengan inspeksi visual, Anda sekarang dapat mengetahui, UUID mana yang dipasang, dan mana yang tidak.
$ udisksctl dump | python -c 'import sys;lines = [l.strip() for l in sys.stdin
> if " UUID" in l or " MountPoints:" in l];print "\n".join(lines)'
MountPoints: /
UUID: 000b5321-01
MountPoints:
UUID: bbf23a81-808e-11e4-a445-201a06d7b0e9
MountPoints:
UUID: bbf23a87-808e-11e4-a445-201a06d7b0e9
MountPoints:
UUID: bbf23a89-808e-11e4-a445-201a06d7b0e9
MountPoints:
UUID: bbf23a8f-808e-11e4-a445-201a06d7b0e9
MountPoints:
UUID: 02fe8de2-a408-11e4-8eeb-f0761c8c6df7
MountPoints: /mnt/HDD
UUID: 53827413-0b7e-4ae6-ae09-1daea529d6a1
Solusi saya
procfs
, jadi tidak ada masalah format perintah output yang aneh,my_uuid=...
while IFS=' ' read -r dev mnt remainder; do
case "$dev" in
/dev/*)
if [ "$dev" -ef "/dev/disk/by-uuid/$my_uuid" ]; then
echo "$my_uuid ($dev) mounted at $mnt"
break
fi;;
esac
done < /proc/mounts
Dengan membangun jawaban luar biasa yang saya terima untuk pertanyaan ini, saya menyadari bahwa lebih mudah untuk bekerja dengan nama perangkat. Untuk mendapatkan nama perangkat dari UUID:
disk_uuid=foo
disk_devname=$(blkid -U "$disk_uuid")
Yang berarti saya dapat dengan cepat menyimpulkan jika sudah terpasang dengan menangkap output dari df
:
df | grep -q "$disk_devname" && echo "Disk mounted" || echo "Disk not mounted"
Atau dengan menggunakan kode dalam jawaban Muru , yang memiliki bonus tambahan untuk memberi tahu saya di mana drive dipasang:
mountpoint=$(lsblk -no MOUNTPOINT "$disk_devname")
if [[ -n "$mountpoint" ]]; then
echo "Disk is mounted at $mountpoint"
else
echo "Disk not mounted"
fi
Anda dapat menggunakan df
perintah untuk melihat sistem file yang terpasang dan titik pemasangannya. Ini adalah contoh dari komputer saya ... partisi sdb3
, tempat saya menginstal sistem lain, tidak dipasang, jadi tidak terdaftar (partisi diberi label ulang, itu sebabnya nama-nama ditampilkan sebagai ganti UUID):
df
Filesystem 1K-blocks Used Available Use% Mounted on
udev 8100756 0 8100756 0% /dev
tmpfs 1625296 9952 1615344 1% /run
/dev/sdb4 41022688 7074348 31834804 19% /
tmpfs 8126464 19456 8107008 1% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 8126464 0 8126464 0% /sys/fs/cgroup
/dev/loop0 76800 76800 0 100% /snap/ubuntu-core/423
/dev/sdb1 4186108 12160 4173948 1% /boot/efi
zsc-lxd/containers/uc-1604-1 58620160 516736 58103424 1% /var/lib/lxd/containers/uc-1604-1.zfs
zsc-lxd/containers/uc-1610-1 58637184 533760 58103424 1% /var/lib/lxd/containers/uc-1610-1.zfs
tmpfs 1625292 124 1625168 1% /run/user/1000
/dev/sdb5 61796348 10766892 47867344 19% /media/cl/virtual
/dev/sda4 206293688 13419740 182371804 7% /media/cl/system
/dev/sda3 206293688 32116600 163674944 17% /media/cl/rescue
/dev/sda2 206293688 1867604 193923940 1% /media/cl/media
/dev/sda1 206293688 2539712 193251832 2% /media/cl/data
df
?
Jika ada tautan bernama " the_UUID
" di /dev/disk/by-uuid/
partisi yang dipasang. Di Ubuntu 14.04.5 (YMMV) saya:
$ ll /dev/disk/by-uuid
total 0
lrwxrwxrwx 1 root root 9 Nov 14 04:30 0123-4567 -> ../../sde
lrwxrwxrwx 1 root root 10 Nov 11 00:25 06ee65d5-26f7-41f3-91ab-3497021a6213 -> ../../dm-0
lrwxrwxrwx 1 root root 10 Nov 11 00:25 12817b99-9d2b-4357-a4ca-c11eab672a20 -> ../../sdb6
lrwxrwxrwx 1 root root 10 Nov 11 00:25 362254e8-2b99-442d-8ad9-4a348bc08032 -> ../../sda1
lrwxrwxrwx 1 root root 10 Nov 11 00:25 83a64b80-5a37-4659-b797-221b88ef41f8 -> ../../sdb5
lrwxrwxrwx 1 root root 10 Nov 11 00:25 ff359af0-d996-4949-b27e-f24ce453c48c -> ../../sdc1
dmesg
dan /var/log/kern.log*
. Sepertinya sistem tidak senang dengan sistem file di partisi, dan tidak bisa memasangnya. Salah satu penyebab yang mungkin adalah hibernasi Windows.
/dev/disks/by-uuid/
direktori.
/dev/disk/by-uuid
dan mitranya memegang semua UUID / ID / label perangkat yang terhubung yang diketahui udev terlepas dari status pemasangannya.