আমি / ইউএসবি ফ্ল্যাশ ড্রাইভ কোনটি?


160

আমি একটি ইউএসবি ড্রাইভ মাউন্ট করতে চাই, এর মধ্যে দুটি এবং আমার দুটি ভিন্ন মাউন্ট পয়েন্ট দরকার। দুর্ভাগ্যক্রমে, লিনাক্স কার্নেলের একটি নাম পরিবর্তন হয়েছে এবং কোন /devঅবস্থানটি সঠিক তা সঠিকভাবে আবিষ্কার করতে পারছি না । সেখানে মাধ্যমে সন্ধান করতে একটি উপায় আছে কি dmesgবা /procখুঁজে বের করতে যা ডিভাইস নোড USB ড্রাইভ বা অন্য কোথাও।

(আমি যদি আর্চলিনাক্স ব্যবহার করি তবে এটি যদি কোনও ... /dev/sdaপ্রথম হার্ড ড্রাইভ হয় তবে /dev/sr0এটি কোনও ডিভিডি ড্রাইভ ইত্যাদি)

সম্পাদনা: ইউএসবি ড্রাইভটি একটি ইউএসবি হাবের সাথে সংযুক্ত। আমি সন্ধান করলাম dmesgএবং এটি বলছে যে হাবটি সংযুক্ত ছিল এবং এটি এর সাথে সংযুক্ত 3 টি ডিভাইসের জন্য স্ক্যান করেছিল। যদিও এখনও আমার ইউএসবি ড্রাইভটি দেখতে পাচ্ছে না।


1
দেখতে পাচ্ছ না? একটু অপেক্ষা করুন অথবা অন্য একটি ইউএসবি পোর্ট চেষ্টা করুন। 'Lsusb'
নিক দেভেরাক্স

প্রশ্নটি কিছুটা পুনরায় ব্যাখ্যা করতে পারে - সমস্ত ইউএসবি ডিভাইসগুলি ডিস্ক নয়, সর্বোপরি।
আরাফাঙ্গিয়ন

3
dfযেখানে এটি মাউন্ট করা আছে সেখানে কমান্ড আপনাকে দেখায়
উইল Sheppard

উত্তর:


83

সবচেয়ে সহজ উপায়: dmesgইউএসবি ডিভাইস সংযোগের পরে আউটপুট দেখুন । এটি আপনাকে /devনোডকে কী বরাদ্দ করা হয়েছিল তা দেখানো উচিত ।


2
dmesgদুর্দান্ত কাজ করে তবে আমার এমন একটি মামলা রয়েছে যেখানে নোডটি প্রদর্শিত dmesgহয় না /dev: এর [421963.864281] usb 3-6: new high-speed USB device number 32 using xhci_hcdঅর্থ কী? আমি কীভাবে এই ডিভাইসটিকে মাউন্ট করতে পারি? ডিভাইসটি প্রদর্শিত হচ্ছে lsusb...
মডুলিটস

1
আসলে, আমি এটি সন্ধান। আমার শেষ পুনরায় বুট করার পরে একটি কার্নেল আপডেট ছিল যা এই সমস্যার কারণ ছিল। পুনরায় বুট করার পরে, আমার ইউএসবি ঠিক সূক্ষ্মভাবে মাউন্ট করে। আশা করি এটি কাউকে সাহায্য করবে!
Modulitos

54

যতক্ষন পর্যন্ত আপনি দৌড়াচ্ছে যেমন udev দ্বারা , আপনি উল্লেখ, / dev / ডিস্ক / উপ-ID / usb- সহজেই এটা করতে পারেন ManufacturerName : _ SERIALNUMBER । এগুলি প্রতীকী লিঙ্ক হিসাবে উপস্থিত হয় যা আপনি সরাসরি আপনার fstab এর মধ্যে সরাসরি উল্লেখ করতে পারেন, বা সম্পর্কিত ব্লক ডিভাইস নির্ধারণ করতে আপনি রিডলিংক-ই ব্যবহার করে ডিফারেন্স করতে পারেন ।

এখানে একটি বাস্তব বিশ্বের উদাহরণ। আমার মেশিনে, আমি 3 টি ইউএসবি হার্ড ড্রাইভ সংযুক্ত করেছি। এগুলি প্রতিটি / দেব / ডিস্ক / বাই-আইডিতে অনন্য সিরিয়াল নম্বর সহ প্রদর্শিত হয় (যদিও তারা একটি সাধারণ প্রস্তুতকারকের স্ট্রিং ভাগ করে)। আমি এই তিনটি অনন্য এন্ট্রিগুলির প্রত্যেকটির প্রতীকী লিঙ্কগুলি তৈরি করেছি এবং এখনই রিডলিঙ্ক- লিঙ্কনাম চালিয়ে কোন ড্রাইভটি কোনটি (এবং প্রতিটি ড্রাইভের সাথে কোন ডিভাইসটি যুক্ত) তা দ্রুতই নির্ধারণ করতে পারি । উদাহরণস্বরূপ, আমার মেশিনে রিডলিঙ্ক -e / রুট / ডিস্ক 2 চালানো বর্তমানে " / dev / sde " প্রদর্শন করে, যখন রিডলিঙ্ক -e / মূল / ডিস্ক 3 কোনও আউটপুট তৈরি করে না।


15
সংক্ষিপ্ত এবং সহজভাবে:for devlink in /dev/disk/by-id/usb*; do readlink -f ${devlink}; done
ফিলিপ আলকাসিবার

54

এগুলি সবই ভাল পরামর্শ, তবে দ্রুত এবং সর্বনিম্ন ভার্বোজ পদ্ধতিটি কেবলমাত্র টার্মিনালে নিম্নলিখিতগুলি টাইপ করা:

mount

যা সমস্ত মাউন্ট করা ডিভাইসের একটি তালিকা দেবে (এটি ধরে রাখে যে ইউএসবি ড্রাইভটি মাউন্ট করা রয়েছে, যা সাধারণত আধুনিক লিনাক্স ডিস্ট্রোসের ক্ষেত্রে হয়)।


5
না, এটি যাদুকরীভাবে আপনার ডিভাইসটিকে মাউন্ট করে না। আপনাকে এটি দিয়ে নির্দিষ্ট করতে হবে mount /dev/id /mount/point, যাতে এটি কার্যকর হয় না।
পলিম

9
আমার উত্তরটি ব্যবহারকারীর প্রশ্নের সম্বোধন করে 'কোন ডিভাইস নোডটি একটি ইউএসবি ড্রাইভ তা আবিষ্কার করার জন্য ডেমসগ বা / প্রোকো বা অন্য কোথাও দেখার উপায় আছে কি না।' ।
আরেকটি লং ব্যবহারকারী নাম 14

এই উত্তরটি আমার জন্য প্রায় অভিন্ন প্রশ্নের সমাধান করেছে।
ম্যাথু ব্রাউন ওরফে লর্ড ম্যাট

1
আমি মনে করি অটোমোন্ট আচরণটি ডিস্ট্রো ধরণের উপর নির্ভর করে।
jiggunjer

1
dfআমিও মনে করি
আলেক্সি

24

কমান্ডটি ব্যবহার করে দেখুন udevinfo -q all -n /dev/sda, যেখানে /dev/sdaআপনার ডিস্কের পথ রয়েছে। এটি আপনাকে যে ডিস্কে খুঁজছেন সে সম্পর্কে একটি নৌকা বোঝা দেয় - একটি এন্ট্রি রয়েছে যা আপনাকে এটির সাথে সংযুক্ত বাসের কথা বলে।

এটি অবশ্যই আপনাকে dmesg এবং / অথবা লগের মাধ্যমে গ্রেপ করা থেকে বাঁচায়।

হালনাগাদ

udevadm info --query=all -n /dev/sda 

কমপক্ষে জুলাই ২০১০ থেকে [ ] একটি সাময়িক ক্ষণস্থায়ী udevinfoদ্বারা দেবিয়ান (এবং উত্পন্ন) দ্বারা প্রতিস্থাপিত হয়েছিল udevadm infoযার সাথে শীঘ্রই প্রতীকযুক্ত এবং সরিয়ে দেওয়া হয়েছে (আপনি এখনও তাদের পুরানো আপডেট হওয়া মেশিনে খুঁজে পেতে পারেন)। সর্বদা [ 1 ] থেকে আমরা পড়তে পারি:

ওদেব ১১7-এ, udevadmচালু হয়েছিল udevinfoএবং অন্যান্য প্রোগ্রামগুলি সামঞ্জস্যের প্রতীক হিসাবে পরিবর্তিত হয়েছিল। এই প্রতিলিঙ্কগুলি ইউদেব 128 এ অবমূল্যায়ন করা হয়েছিল এবং ওদেব 147 এর জন্য ভালভাবে সরানো হয়েছিল ।


8
দেবিয়ান, udevinfoনামকরণ করা হয় udevadm
স্টিভ পোমেরোয়

8
উবুন্টু তারিখে, কমান্ড হতে "udevadm তথ্য --query = সব -n / dev / sda" বলে মনে হয়
machineghost

আমি মনে করি তারা কোনও সময় কমান্ডটির নাম পরিবর্তন করে
রেখেছিল

কমান্ড উবুন্টুতে এখনও কাজ করেudevadm info --query=all -n /dev/ttyUSB1
সিদ্ধার্থ

1
udevadm info --query=all -n /dev/ttyUSBফেডোরায়ও।
slm

22

কী চলছে তা দেখার সহজ পদ্ধতিটি কেবল টাইপ করা (অবশ্যই মূল হিসাবে):

blkid -c /dev/null

এটি আপনাকে মাউন্ট না করা সত্ত্বেও সমস্ত ব্লক ডিভাইস সম্পর্কে একটি সম্পূর্ণ ওভারভিউ দেয়


সব ডিস্ট্রো এর এই না। আপনি কোনটি ব্যবহার করছিলেন?
নিউ আলেকজান্দ্রিয়া

এটি আমার রাস্প্বিয়ান ডিস্ট্রোতে কিছুই আউটপুট করে না।
ইগোরগানাপলস্কি

কমান্ডটি পাওয়া যায় নি: blkid
ইগোরগানাপলস্কি

উবুন্টু 14.04 64-বিটে এই আদেশটি থেকে কোনও আউটপুট আসেনি।
gbmhunter

11

/dev/disk/by-* এই ক্ষেত্রে সবচেয়ে সহজ উপায়, যদি কোনও কারণে আপনি জীবনকে আরও আকর্ষণীয় করতে চান তবে আপনি এইচএএল ব্যবহার করতে পারেন।

আপনার ব্যবহৃত সমস্ত ডিভাইসগুলির তালিকা করতে:

hal-device

আপনি যে নির্দিষ্ট সম্পত্তি ব্যবহার করেন তা পেতে ( /dev/sd*এটি কোনও USB স্টোরেজ ডিভাইসে ফিরে আসবে ):

hal-get-property --udi $UDI --key block.device

এছাড়াও আছে:

hal-find-by-capability
hal-find-by-property

আপনি যদি এটিকে আরও জটিল করে তুলতে চান তবে তুলনামূলকভাবে নিজেকে সহজেই এইচএএল ভিত্তিক অটো মন্টর লিখতে পারেন, আপনি যদি পুরোপুরি জিনিস স্বয়ংক্রিয় করতে চান তবে এটি বেশ সহজ হতে পারে।

এবং কেবল সম্পূর্ণতার জন্য এখানেও রয়েছে:

lsusb -v
lshw

যা ইউএসবি এবং সাধারণভাবে আপনার হার্ডওয়্যার সম্পর্কে কিছু সাধারণ তথ্য সরবরাহ করে।


2
/ dev / ডিস্ক / বাই আইডি / * ইউএসবি * খুব সহায়ক।
রব

/ ডিভ / ডিস্ক / বাই লেবেল এফটিডব্লু। ধন্যবাদ :)
ট্রিপটিচ

10
sudo fdisk -l

এবং কেবল ফলাফল বিশ্লেষণ করুন।


1
fdisk man পৃষ্ঠা "যদি কোনও ডিভাইস না দেওয়া হয় তবে / proc / পার্টিশনে উল্লিখিত (যদি উপস্থিত থাকে) ব্যবহার করা হয়।" Fdisk চালানো কোনও বিকল্প হতে পারে না ... একটি ডেবিয়ান সিস্টেমের ভিত্তিতে যা আমি জানি এটি ইনস্টল করা নেই, আমার অনুমান যে কিছু জিপিটি সিস্টেমগুলি বিনাবিহীন সফ্টওয়্যারটি ইনস্টল করতে পারে না। তবুও, চেক / প্রোকোশন / পার্টিশনগুলির বিকল্প হওয়া উচিত।
তোগাম

এটিই ছিল আমার পক্ষে একমাত্র বিকল্প fine এটি আপনার পক্ষে কাজ না করলে আমি দুঃখিত!
ফিলিপ

8

ব্যবহার

ls -l /dev/disk/by-id/usb*

ডিফল্ট udev নিয়ম অনুসারে, এটি আপনাকে বেশিরভাগ ইউএসবি ডিভাইস প্রদর্শন করবে এবং এটি আপনাকে সিস্টেমে তাদের ব্লক-ডিভাইসের নামের সিমিলিঙ্কটি প্রদর্শন করবে।

যদি এটি কাজ না করে তবে /dev/disk/by-id/সরাসরি দেখুন।


6

ইউএসবি ডিভাইসের জন্য আপনি সহজভাবে এটি করতে পারেন

REMOVABLE_DRIVES=""
for _device in /sys/block/*/device; do
    if echo $(readlink -f "$_device")|egrep -q "usb"; then
        _disk=$(echo "$_device" | cut -f4 -d/)
        REMOVABLE_DRIVES="$REMOVABLE_DRIVES $_disk"
    fi
done
echo Removable drives found: "$REMOVABLE_DRIVES"

1
+1 টি। কাজটি স্বয়ংক্রিয়ভাবে করার জন্য সরল এবং সংক্ষিপ্ত লিপি।
লিজেই

2

নীচে গাছ দেখুন /dev/disk। এটি বিভিন্ন স্কিম দ্বারা ডিস্ক এবং তাদের পার্টিশন (ফাইল সিস্টেম) তালিকাভুক্ত করে।


2

/ var / লগ / বার্তা dmesg আর তথ্য না থাকলে।


0

আপনি যদি ইউএসবি ড্রাইভটি আনপ্লাগ করেন এবং এটিকে আবার প্লাগ ইন করেন তবে আপনার এটি কার্নেল থেকে শুরু হওয়া দেখতে হবে (dmesg)


0

ঝড়ো টান থেকে উত্সাহিত উত্তরের উপর ভিত্তি করে এবং "/ dev / ডিস্ক / বাই-আইডি / ইউএসবি" ডিভাইস ট্রিকে উত্সাহিত করার জন্য উদেবের উপর নির্ভরশীলতার সাথে আপনি নীচে একটি প্রাকটিক (বাশ) সংজ্ঞায়িত করতে পারেন:

is_usb_device() {
    local device_path=$1        # such as /dev/sdc
    for devlink in /dev/disk/by-id/usb*; do
        if [ "$(readlink -f "$devlink")" = "$device_path" ]; then
            return 0
        fi
    done
    return 1
}

এবং তারপরে এটি ব্যবহার করুন:

if is_usb_device "/dev/sdg"; then
    echo "/dev/sdg is a usb device"
else
    echo "/dev/sdg is not a usb device"
fi
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.