लिनक्स मशीन से जुड़े सभी भंडारण उपकरणों को खोजें [बंद]


109

मुझे किसी दिए गए मशीन से जुड़े सभी योग्य भंडारण उपकरणों को खोजने की आवश्यकता है, चाहे वे माउंट किए गए हों या नहीं

ऐसा करने का डोपे तरीका हर प्रविष्टि को प्रयास करने के लिए होगा /devजो एक लिखने योग्य उपकरणों से मेल खाता है ( hd* and sd*) ......

क्या कोई बेहतर उपाय है, या मुझे इसके साथ रहना चाहिए?


सभी प्रकार के संलग्न उपकरणों के बारे में कर्नेल को क्वेरी करने के लिए अनुशंसित तरीके से libsysfs का उपयोग करें ।
डेविड श्मिट

चूँकि आप उनके बारे में बात करते हैं कि शायद वे घुड़सवार हैं, मुझे लगता है कि आप विभाजन की सूची चाहते हैं, डिस्क की नहीं?
मार्क बेकर

विभाजन ठीक हैं, भी, हाँ :) .. अगर मुझे विभाजन पता है, तो मुझे यह भी पता चलेगा कि भौतिक उपकरण क्या उपलब्ध हैं
वॉरेन

2
चूंकि यूनिक्स और लिनक्स अब उपलब्ध है, इसलिए इस प्रश्न को वहां स्थानांतरित किया जाना चाहिए
वॉरेन

3
@warren - अरे नहीं। उन्हें अभी भी बंद होना चाहिए। जैसा कि आप पोस्ट स्वामी चाहते हैं कि यह स्थानांतरित हो जाए, तो आपको इसे मध्यस्थ ध्यान के लिए ध्वजांकित करना चाहिए। तथ्य यह है कि आप चाहते हैं कि यह कुछ वजन ले जाएगा।
ChrisF

जवाबों:


79

/proc/partitionsसिस्टम को पहचानने वाले सभी ब्लॉक उपकरणों और विभाजनों को सूचीबद्ध करेगा। फिर आप यह file -s <device>निर्धारित करने के लिए उपयोग कर सकते हैं कि विभाजन पर किस तरह की फाइलसिस्टम मौजूद है, यदि कोई हो।


4
उदाहरण के लिए यह सीडी सीडी / डीवीडी ड्राइव (मुझे पता है कि वे आमतौर पर योग्य नहीं हैं)
पिक्सेलबीट

शेल से आप क्या कर सकते हैं, इस पर एक तरह की सीमा है। अधिकांश अन्य सुझाव जो उच्च श्रेणी निर्धारण किए गए हैं वे या तो शेल से काम नहीं करते हैं, जब तक डब नहीं चल रहा है, तब तक काम नहीं करेगा या उन उपकरणों को सूचीबद्ध करेगा जो वास्तव में मौजूद / कॉन्फ़िगर नहीं हैं। यह सभी / देव उपकरणों की जाँच करने से अधिक तेज़ है।
स्टीव बेकर

5
lsblk यह बेहतर है
emj365

1
/ proc / विभाजन आपको Cygwin में ड्राइव अक्षर भी देता है।
katriel

72

आप हमेशा ऐसा कर सकते हैं fdisk -lजो बहुत अच्छी तरह से काम करता है, यहां तक ​​कि EC2 xvda उपकरणों जैसे अजीब सेटअप पर भी।

यहाँ m1.large उदाहरण के लिए एक डंप है:

root@ip-10-126-247-82:~# fdisk -l

Disk /dev/xvda1: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors/track, 1305 cylinders, total 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/xvda1 doesn't contain a valid partition table

Disk /dev/xvda2: 365.0 GB, 365041287168 bytes
255 heads, 63 sectors/track, 44380 cylinders, total 712971264 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/xvda2 doesn't contain a valid partition table

Disk /dev/xvda3: 939 MB, 939524096 bytes
255 heads, 63 sectors/track, 114 cylinders, total 1835008 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/xvda3 doesn't contain a valid partition table

जबकि mountकहता है:

root@ip-10-126-247-82:~# mount
/dev/xvda1 on / type ext4 (rw)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
/dev/xvda2 on /mnt type ext3 (rw)

और /proc/partitionsकहता है:

root@ip-10-126-247-82:~# cat /proc/partitions
major minor  #blocks  name

 202        1   10485760 xvda1
 202        2  356485632 xvda2
 202        3     917504 xvda3

पक्षीय लेख

कैसे fdisk -lकाम करता है कुछ मैं खुद को जानना पसंद करूंगा।


9
निश्चित नहीं है कि आपने कभी काम कैसे किया है fdisk -l, लेकिन मुझे लगा कि आप यह जानना चाहते हैं: यह पढ़ता है /proc/partitionsऔर फिर इसके माध्यम से पुनरावृत्त /sys/dev/block/*करता है जिसमें डिवाइस के सिम्फ़िंक का एक सेट होता है जो sysfs में सही रीप होता है। आप इस जानकारी fdiskको strace:)

1
महान! धन्यवाद। (ओटी: इस प्रश्न को लॉक करने के लिए बेकार है। "लॉक को वापस करने के लिए वोट" बटन होना चाहिए)।
मैक्सिम वीक्स्लर

1
3k प्रतिनिधि और उच्चतर ("फिर से खोलने" बटन) के उपयोगकर्ताओं के लिए है।

क्या सचमे? तब मुझे 3k तक जितनी जल्दी हो सके।
मैक्सिम वीक्स्लर

हां, उन चीजों की पूरी सूची के लिए विशेषाधिकार पृष्ठ देखें जिन्हें आप अधिक प्रतिनिधि के साथ कर सकते हैं।

35

आप lsblk भी आज़मा सकते हैं ... उपयोग- लिनेक्स में है ... लेकिन मेरे पास एक सवाल भी है

fdisk -l /dev/sdl

कोई परिणाम नही

grep sdl /proc/partitions      
   8      176   15632384 sdl
   8      177   15628288 sdl1

lsblk | grep sdl
sdl       8:176  1  14.9G  0 disk  
`-sdl1    8:177  1  14.9G  0 part  

fdisk अच्छा है लेकिन यह अच्छा नहीं है ... ऐसा लगता है कि यह सब कुछ "नहीं" देख सकता है

मेरे विशेष उदाहरण में मेरे पास एक स्टिक है जिसमें एक कार्ड रीडर भी है और मैं केवल स्टिक का उपयोग करके देख सकता हूं:

fdisk -l /dev/sdk

Disk /dev/sdk: 15.9 GB, 15931539456 bytes
255 heads, 63 sectors/track, 1936 cylinders, total 31116288 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xbe24be24

   Device Boot      Start         End      Blocks   Id  System
/dev/sdk1   *        8192    31116287    15554048    c  W95 FAT32 (LBA)

लेकिन कार्ड नहीं (कार्ड होना / देव / एसडीएल)

भी, फ़ाइल -s अक्षम है ...

file -s /dev/sdl1
/dev/sdl1: sticky x86 boot sector, code offset 0x52, OEM-ID "NTFS    ", sectors/cluster 8, reserved sectors 0, Media descriptor 0xf8, heads 255, hidden sectors 8192, dos < 4.0 BootSector (0x0)

यह अच्छा है ... लेकिन

fdisk -l /dev/sdb
/dev/sdb1            2048   156301487    78149720   fd  Linux raid autodetect
/dev/sdb2       156301488   160086527     1892520   82  Linux swap / Solaris

file -s /dev/sdb1
/dev/sdb1: sticky \0

डिस्क के बारे में जानकारी देखने के लिए जिसे fdisk द्वारा एक्सेप्ट नहीं किया जा सकता है, आप parted का उपयोग कर सकते हैं:

parted /dev/sdl print

Model: Mass Storage Device (scsi)
Disk /dev/sdl: 16.0GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system  Flags
 1      4194kB  16.0GB  16.0GB  primary  ntfs




arted /dev/sdb print 
Model: ATA Maxtor 6Y080P0 (scsi)
Disk /dev/sdb: 82.0GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type     File system     Flags
 1      1049kB  80.0GB  80.0GB  primary                  raid
 2      80.0GB  82.0GB  1938MB  primary  linux-swap(v1)

9

ls /sys/block


विभाजन को सूचीबद्ध नहीं करता है। मुझे यकीन नहीं है कि यह वही है जो मूल प्रश्न चाहता था या नहीं।
मार्क बेकर

1
मैं / sys / ब्लॉक के बारे में पता नहीं था - हालांकि यह भी सूचियों उपकरणों कि लिखने योग्य नहीं हैं, डीवीडी ड्राइव की तरह
वॉरेन

1
वास्तव में यह विभाजनों को सूचीबद्ध नहीं करता है - आप उपनिर्देशिकाओं की जांच कर सकते हैं, हालांकि "देव", "स्टेट" और "यूवेंट" नाम की सभी फाइलों को रखने वाले सभी उप-खंडों की तलाश कर रहे हैं और "धारकों" नाम के उप-विभाजक हैं। डीवीडी अभी भी स्टोरेज डिवाइस हैं :)
Mihai Limbă Octan

3
मोचा, आप अपने उत्तर का विस्तार क्यों नहीं करते?
स्पूनमाइजर

2
@warren - संभवतः / देव / डीवीडी सिर्फ एक / dev / sd * या / dev / hd * डिवाइस के लिए एक उपनाम होगा, इसलिए आपको यह समस्या वैसे भी होगी।
स्पूनमाइज़र

7

एचएएल का उपयोग करना (कर्नेल 2.6.17 और ऊपर):


#! /bin/bash
hal-find-by-property --key volume.fsusage --string filesystem |
while read udi ; do
    # ignore optical discs
    if [[ "$(hal-get-property --udi $udi --key volume.is_disc)" == "false" ]]; then
        dev=$(hal-get-property --udi $udi --key block.device)   
        fs=$(hal-get-property --udi $udi --key volume.fstype) 
        echo $dev": "$fs
    fi 
done

4

आधुनिक लिनक्स सिस्टम में आमतौर पर केवल उपकरणों के लिए / देव में प्रविष्टियाँ होती हैं जो मौजूद हैं, इसलिए hda * और sda * से गुजरना जैसा कि आप सुझाव देते हैं कि यह काफी अच्छा काम करेगा

अन्यथा, आपके द्वारा उपयोग किए जा सकने वाले / खरीद में कुछ हो सकता है। वहाँ एक त्वरित नज़र से, मैंने कहा / proc / विभाजन ऐसा लगता है कि यह वही कर सकता है जो आपको चाहिए।


2

libsysfs संभावित रूप से उपयोगी दिखते हैं, लेकिन सीधे शेल स्क्रिप्ट से नहीं। वहाँ एक प्रोग्राम है जो इसके साथ आता है जिसे सिस्टूल कहा जाता है जो आप चाहते हैं, हालांकि यह आपके लिए इसे करने के लिए किसी अन्य प्रोग्राम का उपयोग करने के बजाय सीधे सीधे / sys में देखना आसान हो सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.