আমার কাছে যদি কোনও ড্রাইভ পার্টিশনের ইউআইডি থাকে, কমান্ড লাইনটি ব্যবহার করে এটি মাউন্ট করা হয়েছে কিনা তা আমি কীভাবে অনুসন্ধান করব?
tune2fs
।
tune2fs -U random /dev/sdxx
। তবে এটি সমস্ত ধরণের পার্টিশনের জন্য কাজ করবে না।
আমার কাছে যদি কোনও ড্রাইভ পার্টিশনের ইউআইডি থাকে, কমান্ড লাইনটি ব্যবহার করে এটি মাউন্ট করা হয়েছে কিনা তা আমি কীভাবে অনুসন্ধান করব?
tune2fs
।
tune2fs -U random /dev/sdxx
। তবে এটি সমস্ত ধরণের পার্টিশনের জন্য কাজ করবে না।
উত্তর:
lsblk
সাহায্য করতে পারে. এটি কেবল ইউআইডিউড এবং মাউন্ট পয়েন্ট মুদ্রণ করতে পারে, তাই ইউইউডি প্রদত্ত, মাউন্ট পয়েন্টটি খালি নেই কিনা তা দেখুন:
uuid=foo
lsblk -o UUID,MOUNTPOINT | awk -v u="$uuid" '$1 == u {print $2}'
তাই:
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
যেহেতু lbslk
নির্দিষ্ট ডিভাইসে কাজ করতে পারে তাই আপনি এটি করতেও পারেন:
mountpoint=$(lsblk -o MOUNTPOINT "/dev/disk/by-uuid/$uuid" | awk 'NR==2')
প্রথম পদ্ধতির সাহায্যে, কোনও ত্রুটি হবে না যদি ইউইউডিটি বর্তমানে সংযুক্ত ডিস্ক থেকে নেই। দ্বিতীয় পদ্ধতির সাহায্যে অস্তিত্ব না থাকলে lsblk
ত্রুটি ঘটবে /dev/disk/by-uuid/$uuid
।
lsblk -o UUID,SIZE,MOUNTPOINT
যদি আপনি কেবল আপনার ইউআইডি এবং মাউন্টপয়েন্টের সাথে একটি লাইন চান ($ ইউআইডি আপনার ইউইউডি উপস্থাপন করে):
lsblk -o UUID,MOUNTPOINT|grep "$UUID"
মাউন্ট পয়েন্টটি আনমাউন্ট করা থাকলে খালি হবে। lsblk -h
আরও বিকল্পের জন্য চেষ্টা করুন।
awk
ফলাফল মুদ্রণ করতে ব্যবহার করুন । যদি NF
(ক্ষেত্রের সংখ্যা) একের বেশি হয় তবে এর অর্থ এটির একটি মাউন্ট পয়েন্ট রয়েছে:
lsblk -o UUID,MOUNTPOINT|grep "$UUID"|awk '{if (NF>1) print $1" is mounted"; else print $1" is unmounted";}'
আপনি যদি বিবরণ চান হিসাবে mount
for uuid in /dev/disk/by-uuid/*; do if [[ "$uuid" =~ .*your-UUID-here.* ]]; then echo $(mount | grep "$(readlink -e "$uuid")") ; fi; done
your-UUID-here
আপনার ইউআইডি দিয়ে প্রতিস্থাপন করুন
আরও পঠনযোগ্য:
for uuid in /dev/disk/by-uuid/*; do
if [[ "$uuid" =~ .*your-UUID-here.* ]]
then echo $(mount | grep "$(readlink -e "$uuid")")
fi
done
আউটপুট উদাহরণ:
/dev/mmcblk1p2 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
আপনি এটি পরীক্ষা করে দেখতে পারেন যে স্ট্রিংটি নাল নয় এবং "মাউন্ট" প্রতিধ্বনি:
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
তবে অন্যরা এটি করার আরও ভাল উপায় দিয়েছে :)
উবুন্টু UDisks2
ডেমন ব্যবহার করে , যা ফাইল সিস্টেমগুলি সম্পর্কে পুরোপুরি তথ্য পোল করে, এবং udisksctl
আমাদের প্রয়োজনীয় তথ্য সন্ধানের দ্রুত এবং নোংরা উপায় খুঁজে পেতে আমরা এর আউটপুটটি ব্যবহার করতে এবং ফিল্টার করতে পারি:
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)'
আপনি উপরে যা দেখেন তা মূলত ফাইল সিস্টেমের ইউআইডিগুলি এবং তাদের মাউন্টপয়েন্টগুলি মুদ্রণ করে। চাক্ষুষ পরিদর্শন দ্বারা আপনি এখন নির্ধারণ করতে পারেন, কোন ইউআইডিটি মাউন্ট করা হয়েছে, এবং কোনটি নয়।
$ 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
আমার সমাধান
procfs
তাই কোনও অদ্ভুত কমান্ড আউটপুট বিন্যাসের সমস্যা নেই,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
এই প্রশ্নের জন্য আমি যে দুর্দান্ত উত্তর পেয়েছি তার উপর ভিত্তি করে, আমি বুঝতে পেরেছি যে ডিভাইসের নাম নিয়ে কাজ করা অনেক সহজ। ইউইউডি থেকে ডিভাইসের নাম পেতে:
disk_uuid=foo
disk_devname=$(blkid -U "$disk_uuid")
এর অর্থ আউটপুট গ্রেপ করে মাউন্ট করা থাকলে আমি দ্রুত ছাড় করতে পারি df
:
df | grep -q "$disk_devname" && echo "Disk mounted" || echo "Disk not mounted"
বা মুড়ুর উত্তরে কোডটি ব্যবহার করে , যেখানে আমাকে ড্রাইভটি কোথায় লাগানো হয়েছে তা বলার যুক্ত বোনাস রয়েছে:
mountpoint=$(lsblk -no MOUNTPOINT "$disk_devname")
if [[ -n "$mountpoint" ]]; then
echo "Disk is mounted at $mountpoint"
else
echo "Disk not mounted"
fi
df
মাউন্ট করা ফাইল সিস্টেম এবং তাদের মাউন্ট পয়েন্ট দেখতে আপনি কমান্ডটি ব্যবহার করতে পারেন । এখানে আমার মেশিনের একটি উদাহরণ রয়েছে ... পার্টিশনটি sdb3
, যার উপরে আমি আরেকটি সিস্টেম ইনস্টল করেছি, মাউন্ট করা হয়নি, সুতরাং তালিকাভুক্ত করা হয়নি (পার্টিশনগুলি পুনরায় লেবেলযুক্ত, এজন্য ইউইউডিগুলির পরিবর্তে নামগুলি প্রদর্শিত হবে):
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
?
পার্টিশনে " the_UUID
" নামের একটি লিঙ্ক থাকলে /dev/disk/by-uuid/
মাউন্ট করা হয়। আমার উবুন্টু 14.04.5 (ওয়াইএমএমভি) তে:
$ 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
এবং /var/log/kern.log*
। দেখে মনে হচ্ছে সিস্টেমটি পার্টিশনের ফাইল সিস্টেমের সাথে খুশি নয় এবং এটি মাউন্ট করতে পারে না। একটি সম্ভাব্য কারণ হ'ল উইন্ডোজ হাইবারনেশন।
/dev/disks/by-uuid/
ডিরেক্টরিতে প্রদর্শিত হয়।
/dev/disk/by-uuid
এবং এর অংশগুলি তাদের মাউন্টের অবস্থা নির্বিশেষে udev- তে পরিচিত সংযুক্ত ডিভাইসের সমস্ত ইউআইডি / আইডি / লেবেল ধারণ করে।