सिमलिंक अर्ध सार्वभौमिक लिनक्स पर हैं, लेकिन वे कहीं और (Cygwin जो उन्हें emulates को छोड़कर) मौजूद नहीं हैं। AIX और Solaris पर भी मौजूद हैं, लेकिन वे सहानुभूति नहीं हैं। विशेष रूप से, खुली फ़ाइलों के बारे में जानकारी प्राप्त करने के लिए, इंस्टॉल करें ।/proc/PID/fd/NUM/proc/PID/fd/NUMlsof
के साथ एकजुट होता है /proc/PID/fd
लिनक्स के तहत, फ़ाइल के लिए एक थोड़ा जादू प्रतीकात्मक लिंक है जो आईडी पीआईडी के साथ प्रक्रिया फाइल डिस्क्रिप्टर एनयूएम पर खुला है । यह लिंक इसमें जादू है, उदाहरण के लिए, इसका उपयोग फ़ाइल को हटाने के लिए भी किया जा सकता है, भले ही फ़ाइल हटा दी गई हो। लिंक नाम बदलने के माध्यम से फ़ाइल को भी ट्रैक करेगा। एक जादुई प्रतीकात्मक लिंक है जो इंगित करता है कि पीआईडी वह प्रक्रिया है जो लिंक तक पहुंचती है।/proc/PID/fd/NUM/proc/self/proc/PID
यह सुविधा वस्तुतः सभी लिनक्स सिस्टम पर मौजूद है। यह ड्राइवर द्वारा खरीदे गए फाइलसिस्टम के लिए प्रदान किया जाता है , जो तकनीकी रूप से वैकल्पिक है लेकिन कई चीजों के लिए उपयोग किया जाता है ( psकाम बनाने सहित - यह पढ़ता है ) कि यह लगभग कभी भी एम्बेडेड सिस्टम पर नहीं छोड़ा गया है।/proc/PID
Cygwin
साइग्विन लिनक्स का अनुकरण करता है (सिगविन प्रक्रियाओं के लिए) और ।/proc/PID/fd/NUM/proc/self
प्रत्येक फ़ाइल डिस्क्रिप्टर के लिए प्रविष्टियाँ होती हैं , लेकिन वे उसी प्रकार दिखाई देती हैं जैसे कि खुली हुई फ़ाइल, इसलिए वे फ़ाइल के पथ के बारे में कोई जानकारी नहीं देते हैं। हालांकि वे उसी सूचना को रिपोर्ट करते हैं जो फ़ाइल को खोलने वाली प्रक्रिया को रिपोर्ट करती है, इसलिए यह निर्धारित करना संभव है कि फ़ाइल किस फाइल सिस्टम में स्थित है और इसकी इनकोड संख्या। निर्देशिकाएँ प्रतीकात्मक लिंक के रूप में दिखाई देती हैं, हालांकि वे जादू सिम्बल हैं जिन्हें केवल अनुसरण किया जा सकता है, और एक खाली स्ट्रिंग लौटाता है।/proc/PID/fdstatfstatreadlink
AIX के तहत, procfilesकमांड प्रक्रिया की खुली फाइलों के बारे में कुछ जानकारी प्रदर्शित करता है। सोलारिस के तहत, pfilesकमांड एक प्रक्रिया की खुली फाइलों के बारे में कुछ जानकारी प्रदर्शित करता है। इसमें फ़ाइल का पथ शामिल नहीं है (सोलारिस पर, यह सोलारिस 10 के बाद से करता है, नीचे देखें)।
इसके अलावा , आधुनिक सोलारिस संस्करणों में लिनक्स के सिमलिंक के समान प्रतीकात्मक लिंक होते हैं । एक प्रक्रिया के बारे में आदेश शो जानकारी रास्तों सहित खुली फ़ाइलों, है।/proc/PID/fd/NUM/proc/PID/path/NUM/proc/PID/fd/NUMpfiles
/proc/PID/fdएक पाठ फ़ाइल है जिसमें प्रक्रिया द्वारा खोले गए फ़ाइल विवरणक में एक रिकॉर्ड (लाइन) है। फ़ाइल नाम को वहां ट्रैक नहीं किया गया है।
/proc/PID/ एक निर्देशिका है, लेकिन इसमें फ़ाइल विवरणकों के बारे में कोई जानकारी नहीं है।
यूनियनों के साथ /procसीधे संपर्क करने के लिए कोई पहुंच नहीं है
(ध्यान दें: कभी-कभी किसी प्रक्रिया की खुली फ़ाइलों के बारे में जानकारी प्राप्त करना संभव होता है, इसकी मेमोरी इमेज के माध्यम से रिफ़्लिंग जो कि सुलभ है /proc। मैं इसे "डायरेक्ट एक्सेस" के रूप में नहीं गिनता।)
एक फ़ाइल कहां है/proc/PID
यूसीआईएक्स 8 वें संस्करण में खरीद फाइलसिस्टम स्वयं शुरू हुआ , लेकिन एक अलग संरचना के साथ, और योजना 9 के माध्यम से और कुछ यूनियनों में वापस चला गया। मुझे लगता है कि सभी ऑपरेटिंग सिस्टमों में /procप्रत्येक PID के लिए एक प्रविष्टि है, लेकिन कई प्रणालियों पर, यह एक निर्देशिका नहीं बल्कि एक नियमित फ़ाइल है। निम्नलिखित प्रणालियों के साथ पढ़ने की जरूरत है :/proc/PIDioctl
- 2.5 तक सोलारिस
- OSF / 1 अब Tru64 के रूप में जाना जाता है
- IRIX (?)
- एससीओ (?)
MINIX 3 में एक procfs सर्वर है जो निर्देशिकाओं सहित कई लिनक्स जैसे घटक प्रदान करता है । हालाँकि ऐसा नहीं है ।/proc/PID//proc/PID/fd
FreeBSD के पास निर्देशिकाएं हैं, लेकिन वे खुले फ़ाइल विवरणकों के बारे में जानकारी प्रदान नहीं करते हैं। (हालांकि , लिनक्स के समान है , जो एक प्रतीकात्मक लिंक के माध्यम से निष्पादन योग्य तक पहुंच प्रदान करता है।)/proc/PID//proc/PID/file/proc/PID/exe
FreeBSD के नतीजों को हटा दिया जाता है ।
बिना के /proc
- HP-UX
- OpenBSD
- NetBSD
- मैक ओएस एक्स
अन्य चैनलों के माध्यम से फाइल डिस्क्रिप्टर जानकारी
fuserआदेश सूचियों निर्दिष्ट प्रक्रियाओं एक निर्दिष्ट फ़ाइल खुला है, या एक फ़ाइल पर खोले गए उस बिंदु माउंट। यह कमांड मानक है (सभी XSI -compliant सिस्टम पर उपलब्ध है , यानी X / ओपन सिस्टम इंटरफेस एक्सटेंशन के साथ POSIX)।
आप इस उपयोगिता के साथ नाम दर्ज करने के लिए एक प्रक्रिया से नहीं जा सकते।
Lsof का अर्थ है "सूची खुली फाइलें"। यह एक तृतीय-पक्ष उपकरण है , अधिकांश यूनिक्स वेरिएंट के लिए उपलब्ध (लेकिन आमतौर पर डिफ़ॉल्ट स्थापना का हिस्सा नहीं है)। खुली फ़ाइलों के बारे में जानकारी प्राप्त करना बहुत ही सिस्टम-निर्भर है, क्योंकि ऊपर दिए गए विश्लेषण ने आपको संदेह कर दिया होगा। Lsof मेंटेनर ने सभी को एक ही इंटरफेस के तहत मिलाने का काम किया है।
आप यह देखने के लिए अक्सर पूछे जाने वाले प्रश्न पढ़ सकते हैं कि lsof को किस प्रकार की कठिनाइयों के साथ आना है। अधिकांश यूनियनों पर, खुली फाइलों के नाम के बारे में जानकारी प्राप्त करने के लिए कर्नेल डेटा संरचनाओं को पार्स करने की आवश्यकता होती है। पूछे जाने वाले प्रश्न 3.3 से उद्धरण "क्यों lsof पूर्ण पथ नामों की रिपोर्ट नहीं करता है?":
Lsof निम्नलिखित बोलियों के कर्नेल नाम कैश से पथ नाम घटक प्राप्त नहीं कर सकता है:
केवल लिनक्स कर्नेल खुली हुई फ़ाइलों के बारे में बनाए रखने वाली संरचनाओं में पूर्ण पथ नाम रिकॉर्ड करता है; इसके बजाय, अधिकांश कर्नेल पथ नाम को डिवाइस और नोड नंबर डबल में परिवर्तित करते हैं और फ़ाइलों को खोलने के बाद उन्हें बाद के फ़ाइल संदर्भों के लिए उपयोग करते हैं।
यदि आपको lsofआउटपुट से जानकारी पार्स करने की आवश्यकता है , तो -Fमोड (प्रति पंक्ति एक फ़ील्ड), अधिमानतः -F0मोड (अशक्त-सीमांकित फ़ील्ड) का उपयोग करना सुनिश्चित करें । किसी विशिष्ट प्रक्रिया के एक विशिष्ट फ़ाइल डिस्क्रिप्टर के बारे में जानकारी प्राप्त करने के लिए , उदाहरण के लिए और के -aसाथ विकल्प का उपयोग करें ।-p PID-d NUMlsof -a -p 123 -d 0 -F0n
/dev/fd/NUM वर्तमान प्रक्रिया के फाइल डिस्क्रिप्टर के लिए
कई यूनिक्स संस्करण एक फ़ाइल नाम के माध्यम से अपनी खुली फ़ाइलों तक पहुंचने की प्रक्रिया के लिए एक रास्ता प्रदान करते हैं: उद्घाटन कॉलिंग के बराबर है । ये नाम तब उपयोगी होते हैं जब कोई प्रोग्राम फ़ाइल नाम चाहता है, लेकिन आप पहले से खुली हुई फ़ाइल (जैसे पाइप या सॉकेट) पास करना चाहते हैं; उदाहरण के लिए, शेल जो प्रक्रिया प्रतिस्थापन को लागू करते हैं, उन्हें जहां उपलब्ध हो (अस्थाई नामित पाइप का उपयोग उपलब्ध नहीं है) का उपयोग करें।/dev/fd/NUMdup(NUM)/dev/fd
जहाँ /dev/fdमौजूद है, वहाँ भी आम तौर पर (हमेशा?) समानार्थी शब्द (कभी-कभी प्रतीकात्मक लिंक, कभी-कभी कठिन लिंक, कभी-कभी समतुल्य गुणों वाली मैजिक फाइलें) /dev/stdin= /dev/fd/0, /dev/stdout= /dev/fd/1, /dev/stderr= होते हैं /dev/fd/2।
- लिनक्स के तहत,
/dev/fdएक प्रतीकात्मक लिंक है /proc/self/fd।
- अधिकांश यूनियनों ( IRIX , OpenBSD , NetBSD , SCO, Solaris , ...) के तहत, प्रविष्टियाँ
/dev/fdचरित्र उपकरण हैं। वे आमतौर पर दिखाई देते हैं कि फ़ाइल डिस्क्रिप्टर खुला है या नहीं, और एक निश्चित संख्या से ऊपर फ़ाइल डिस्क्रिप्टर के लिए प्रविष्टियां उपलब्ध नहीं हो सकती हैं।
- FreeBSD और OSX के तहत, fdescfs फाइल सिस्टम एक गतिशील
/dev/fdनिर्देशिका प्रदान करता है जो कॉलिंग प्रक्रिया के खुले विवरणों का अनुसरण करता है। एक स्टैटिक /dev/fdउपलब्ध है /dev/fdमाउंट नहीं है।
- OSF / 1 (Tru64) के तहत, fdfs के
/dev/fd माध्यम से प्रदान किया जाता है ।
/dev/fdAIX या HP-UX पर कोई भी नहीं है ।
pfilesकमांड फाइल डिस्क्रिप्टर पथ दिखाता है। यह/proc/<pid>/pathनिर्देशिका से यह जानकारी प्राप्त करता है जिसका आप भी उल्लेख कर सकते हैं। देखें docs.oracle.com/cd/E19253-01/817-0547/esxiq/index.html