सबसे सटीक तरीका जिससे मैं अवगत हूं, वह है lstat () सिस्टम कॉल के आउटपुट का उपयोग करना। विशेष रूप से, st_dev क्षेत्र। एक कमांड लाइन उपयोगिता है, स्टेट (1) जिसका उपयोग इस जानकारी को देखने के लिए किया जा सकता है। उदाहरण के लिए, मेरे लैपटॉप पर "स्टेट / आदि / इश्यू" का आउटपुट:
File: ‘/etc/issue’
Size: 65 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 1610916043 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
तीसरी पंक्ति, प्रथम फ़ील्ड, "डिवाइस" पर ध्यान दें। यहाँ यह 801h सूचीबद्ध करता है। उस मूल्य को दो बाइट्स में विभाजित किया जा सकता है, 8 और 1. पहला बाइट प्रमुख संख्या के रूप में जाना जाता है, दूसरा बाइट मामूली संख्या है। तो, अगला कदम यह पता लगाना है कि डिवाइस प्रमुख 8, माइनर 1 क्या है।
मुझे सबसे तेज़ होने के लिए परामर्श / खरीद / विभाजन मिलते हैं। मेरे मामले में, / proc / विभाजन में सामग्री है:
major minor #blocks name
8 16 234431064 sdb
8 17 33554432 sdb1
8 18 200875608 sdb2
8 0 500107608 sda
8 1 500106584 sda1
यह उस आउटपुट से स्पष्ट है कि प्रमुख 8, लघु 1 sda1 है। हम एक ls -l / dev / sda1 के साथ इसकी पुष्टि कर सकते हैं
brw-rw---- 1 root disk 8, 1 May 8 05:33 /dev/sda1
डेटास्टैंप से पहले 8, 1 को नोटिस करें।
यह समझना / याद रखना महत्वपूर्ण है कि डिवाइस फ़ाइल का नाम जैसे / dev / sda1 केवल एक लेबल है। प्रमुख और मामूली संख्या डिवाइस फ़ाइल के महत्वपूर्ण, महत्वपूर्ण मूल्य हैं। यदि आप उत्सुक हैं, तो डिवाइस फ़ाइलों को बनाने के लिए उपयोग किए जाने वाले mknod (1) उपयोगिता की जांच करें। मैं निम्नलिखित सिंटैक्स के साथ प्रमुख 8, माइनर 18 के साथ एक नई / देव प्रविष्टि बना सकता हूं, जिसे अर्वार्क कहा जाता है:
mknod /dev/aardvark b 8 18
तब, मैं इसे आसानी से माउंट कर सकता था:
mount /dev/aardvark /mnt
और, यदि हम माउंट कमांड या / proc / mounts की सामग्री को देखते हैं और हम देखते हैं:
/dev/aardvark on /mnt type xfs (rw,relatime,attr2,inode64,noquota)
df -h शो:
/dev/aardvark 192G 154G 38G 81% /mnt
... वैसे भी, इस सब का मतलब यह है कि ब्लॉक डिवाइस की पहचान के लिए महत्वपूर्ण विवरण प्रमुख और मामूली संख्या हैं - डिवाइस फ़ाइल लेबल नहीं - और यह कि lstat () सिस्टम कॉल का उपयोग करना सबसे अच्छा तरीका है उन मूल्यों को क्वेरी करें।
अंतिम टिप्पणी के रूप में, मैं सिर्फ यह सुनिश्चित करने के लिए आपके प्रश्न को फिर से पढ़ता हूं कि मैं इसका उत्तर दे रहा था और मुझे एहसास हुआ कि आप पूछ रहे थे कि बाइंड माउंट के लिए कौन सा स्रोत उपकरण लेबल / प्रॉप / माउंट में दिखाई देगा। यह वैसा ही सोर्स डिवाइस लेबल होगा जैसा कि बाइंड माउंट के लिए फाइलसिस्टम माउंटपॉइंट सोर्स के लिए ओरिजिनल माउंट (2) कॉल में इस्तेमाल किया गया था। शायद एक उदाहरण मदद करेगा:
मेरे पास / dev / sdb2 और / dev / aardvark (ऊपर जैसा है)। वे दोनों प्रमुख 8, मामूली 18 हैं। ध्यान दें, मैं एक ही फाइल सिस्टम को दो बार बढ़ाऊंगा। मैं निम्नलिखित कार्य करता हूं:
mkdir /mnt1 /mnt2 /foo
mount /dev/aardvark /mnt1
mount /dev/sdb2 /mnt2
ध्यान दें कि मैं निर्देशिका को किसी दिन / mnt1 में बनाता हूं। लेकिन चूंकि / mnt1 और / mnt2 में समान फाइलसिस्टम आरोहित है, सोमेदिर भी / mnt2 के माध्यम से उपलब्ध होगा।
mkdir /mnt1/somedir
mkdir /foo/left /foo/right
mount -o bind /mnt1/somedir /foo/left
mount -o bind /mnt2/somedir /foo/right
अब, यदि हम जाँच / खरीद / mounts, हम देखते हैं:
/dev/aardvark /mnt1 xfs rw,relatime,attr2,inode64,noquota 0 0
/dev/sdb2 /mnt2 xfs rw,relatime,attr2,inode64,noquota 0 0
/dev/aardvark /foo/left xfs rw,relatime,attr2,inode64,noquota 0 0
/dev/sdb2 /foo/right xfs rw,relatime,attr2,inode64,noquota 0 0
/ Foo / ... बाइंड माउंट पर स्रोत डिवाइस लेबल मूल रूप से फाइलसिस्टम माउंट (2) कॉल में दिए गए मूल्य के समान है। याद रखें, मेरे उदाहरण में / dev / aardvark और / dev / sdb2 एक ही उपकरण हैं।
मुझे लगता है कि मैंने सिर्फ एक उपन्यास टाइप किया है और पहली छमाही वास्तव में आपके सवाल का जवाब नहीं देती है, लेकिन ऐसा लगता है कि इसे हटाने के लिए ऐसा बेकार है। शायद यह किसी और की मदद करेगा।
शुभ लाभ।
PS ध्यान रखें कि कुछ फाइलसिस्टम नेटवर्क आधारित हैं - जैसे NFS या CIFS - या वर्चुअल हैं - जैसे कि procfs या sysfs और जिनके पास स्रोत ब्लॉक डिवाइस नहीं है। मुझे नहीं पता कि स्टेट आउटपुट में डिवाइस के रूप में क्या लौटाया जाएगा, बस इसके लायक क्या है।
$PWD
(जो मैं बढ़ रहा हूं) सिमिलिंक, बाइंड माउंट आदि की एक श्रृंखला में दफन है, तो मुझे माउंट पॉइंट्स के लिए पथ की पुन: जांच करने की आवश्यकता होगी।