Lsof का परिचय

लिनक्स के तहत, कई वस्तुओं को एक फाइल माना जाता है, भले ही वह वस्तु वास्तव में एक फाइल, डिवाइस, निर्देशिका या सॉकेट हो। किसी फ़ाइल को सूचीबद्ध करना आसान ह��, इसके लिए निर्मित शेल lsहै। लेकिन क्या होगा यदि कोई उपयोगकर्ता यह देखना चाहता है कि वर्तमान में वेब सर्वर प्रक्रिया द्वारा कौन सी फाइलें खोली गई हैं? या यदि वह उपयोगकर्ता यह पता लगाना चाहता है कि एक निश्चित निर्देशिका में कौन सी फाइलें खोली गई हैं? वहीं lsofसे खेल में आता है। कल्पना कीजिए कि lsofएक के रूप में ls"खुला फ़ाइलें" के अलावा के साथ।

कृपया ध्यान दें कि जबकि बीएसडी की इस नौकरी के लिए एक अलग उपयोगिता है fstat, उदाहरण के लिए, यूनिक्स (सोलारिस) के कई अन्य स्वाद भी हैं lsof। अन्य प्लेटफार्मों पर विकल्प और झंडे अलग-अलग हैं, साथ ही आउटपुट भी दिखते हैं, लेकिन आम तौर पर इस लेख में ज्ञान उनके लिए भी लागू होना चाहिए।

सबसे पहले, आइए lsofआउटपुट के प्रारूप पर एक नज़र डालें और इसे कैसे पढ़ा जाए। lsofबिना किसी पैरामीटर के सामान्य आउटपुट निम्न सदृश होगा। यह पठनीयता के लिए छंटनी की गई है।

COMMAND    PID  TID       USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
init         1            root  cwd       DIR              254,1      4096          2 /
init         1            root  rtd       DIR              254,1      4096          2 /
init         1            root  txt       REG              254,1     36992    7077928 /sbin/init
init         1            root  mem       REG              254,1     14768    7340043 /lib/x86_64-linux-gnu/libdl-2.13.so
init         1            root  mem       REG              254,1   1603600    7340040 /lib/x86_64-linux-gnu/libc-2.13.so
init         1            root  mem       REG              254,1    126232    7340078 /lib/x86_64-linux-gnu/libselinux.so.1
init         1            root  mem       REG              254,1    261184    7340083 /lib/x86_64-linux-gnu/libsepol.so.1
init         1            root  mem       REG              254,1    136936    7340037 /lib/x86_64-linux-gnu/ld-2.13.so
init         1            root   10u     FIFO               0,14       0t0       4781 /run/initctl

इन स्तंभों का अर्थ निम्न है:

  • COMMAND - वह प्रक्रिया जो एक खुली फ़ाइल से संबंधित है, इस उदाहरण में सब कुछ संबंधित है init
  • PID - उक्त प्रक्रिया की प्रक्रिया पहचान संख्या।
  • उपयोगकर्ता - प्रक्रिया के तहत चलने वाला उपयोगकर्ता। के लिए init, यह लगभग हमेशा है root
  • एफडी - फाइल का फाइल डिस्क्रिप्टर, सबसे आम:
    • cwd- वर्तमान कार्य निर्देशिका (आप pwdकमांड में समानता को देख सकते हैं जो वर्तमान कार्य निर्देशिका को प्रिंट करता है)।
    • rtd - एक प्रक्रिया की जड़ निर्देशिका।
    • txt- text fileइसका मतलब या तो प्रक्रिया से संबंधित कॉन्फ़िगरेशन फ़ाइल या प्रक्रिया से संबंधित (या स्रोत) से संबंधित "स्रोत कोड" हो सकता है।
    • mem - एक तथाकथित "मेमोरी मैप्ड फाइल", जिसका अर्थ है वर्चुअल मेमोरी का एक सेगमेंट (पढ़ें: RAM) जिसे एक फाइल को सौंपा गया है।
    • एक संख्या - संख्या वास्तविक फ़ाइल विवरणक का प्रतिनिधित्व करती है, संख्या के बाद का चरित्र वह मोड है जिसमें फ़ाइल खोली जाती है:
    • r - पढ़ें।
    • w - लिखो।
    • u - पढ़ना और लिखना।
  • टाइप - फ़ाइल का वास्तविक प्रकार निर्दिष्ट करता है, सबसे आम हैं:
    • REG - एक नियमित फ़ाइल।
    • DIR - एक निर्देशिका।
    • FIFO - पहला अंदर पहला बाहर।
  • डिवाइस - फाइल रखने वाली डिवाइस की प्रमुख और मामूली संख्या।
  • आकार - फाइल का आकार, बाइट्स में।
  • NODE - फाइल का इनकोड नंबर।
  • NAME - फ़ाइल का नाम।

यह अब के लिए थोड़ा भारी हो सकता है, लेकिन यदि आप lsofकुछ समय के साथ काम करते हैं, तो यह जल्दी से आपके मस्तिष्क में डूब जाएगा।

जैसा कि ऊपर उल्लेख किया गया है, यहाँ आउटपुट lsofको छोटा कर दिया गया है। किसी भी तर्क या फ़िल्टर के बिना, lsofआउटपुट की सैकड़ों लाइनें बनाता है जो केवल आपको भ्रमित कर देगा।

उस समस्या को हल करने के लिए दो बुनियादी दृष्टिकोण हैं:

  • lsofपरिणामों को कम करने के लिए कमांड लाइन विकल्पों में से एक या अधिक का उपयोग करें ।
  • उदाहरण के लिए, के माध्यम से आउटपुट को पाइप करें grep

हालांकि बाद वाला विकल्प आपको अधिक आरामदायक लग सकता है क्योंकि आपको lsofकमांड लाइन के विकल्पों को याद नहीं रखना होगा , यह आमतौर पर उतना लचीला और कुशल नहीं होता है, इसलिए हम पहले वाले से चिपके रहेंगे।

आइए कल्पना करें कि आप अपने पसंदीदा टेक्स्ट एडिटर के साथ एक फाइल खोलना चाहते हैं, और यह कि टेक्स्ट एडिटर आपको बताता है कि इसे केवल रीड-ओनली मोड में ही खोला जा सकता है क्योंकि एक अन्य प्रोग्राम पहले से ही इसे एक्सेस कर रहा है। lsofआपको यह पता लगाने में मदद करेगा कि अपराधी कौन है:

lsof /path/to/your/file

यह इस तरह एक उत्पादन का उत्पादन करेगा:

COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF    NODE NAME
vim 2679 root    5w   REG  254,1   121525 6035622 /root/lsof.txt

जाहिर है, आप बंद और पुराने सत्र भूल गए! इसी तरह की समस्या तब होती है जब आप NFS शेयर को अनमाउंट करने की कोशिश करते हैं और umountआपको बताते हैं कि ऐसा नहीं हो सकता क्योंकि कुछ अभी भी माउंटेड फोल्डर को एक्सेस कर रहा है। फिर से, lsofअपराधी की पहचान करने में आपकी मदद कर सकते हैं:

lsof +D /path/to/your/directory/

ट्रेलिंग स्लैश पर ध्यान दें, यह महत्वपूर्ण है। अन्यथा lsofआप मान लेंगे कि एक नियमित फ़ाइल है। +झंडे के सामने भ्रमित न हों - lsofइसमें कई कमांड लाइन विकल्प हैं जो इसे +अधिक सामान्य के अतिरिक्त चाहिए -। आउटपुट इस तरह दिखेगा:

COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
mocp    5637  music    4r   REG   0,19 10147719 102367344 /home/Music/RMS_GNU_SONG.ogg

इसका मतलब है कि mocpपीआईडी ​​के साथ 5637, उपयोगकर्ता से संबंधित प्रक्रिया musicने एक फाइल खोली है, जिसे कहा जाता है RMS_GNU_SONG.ogg। हालांकि, उस प्रक्रिया को बंद करने के बाद भी, अभी भी एक समस्या है - एनएफएस वॉल्यूम को अनमाउंट नहीं किया जा सकता है।

lsofएक -cझंडा है जो फाइलों को प्रदर्शित करता है एक मनमानी प्रक्रिया नाम खोला है।

lsof -c mocp

यह इस तरह दिखने वाले आउटपुट का उत्पादन करेगा:

mocp    9383  music    4r   REG   0,19 10147719 102367344 /home/Music/ANOTHER_RMS_GNU_SONG.ogg

इस उदाहरण में, mocpचलने का एक और उदाहरण है, जो आपको शेयर को अनमाउंट करने से रोकता है। उस प्रक्रिया को बंद करने के बाद, आप यह सुनिश्चित करना चाहते हैं कि उपयोगकर्ता के musicपास कोई अन्य संभावित समस्याग्रस्त फ़ाइल नहीं है। किसी विशिष्ट उपयोगकर्ता द्वारा खोली गई फ़ाइलों को दिखाने के लिए lsofएक -uध्वज है। याद रखें, आपकी हार्ड डिस्क पर एक फ़ाइल हमेशा एक नियमित फ़ाइल नहीं होती है!

lsof -u music

आप कई उपयोगकर्ताओं को भी अल्पविराम द्वारा अलग कर सकते हैं:

lsof -u music,moremusic

डिफ़ॉल्ट व्यवहार पर एक महत्वपूर्ण ध्यान दें lsof: परिणाम OR- आधारित हैं, जिसका अर्थ है कि आप उन प्रक्रियाओं द्वारा खोले गए फ़ाइल परिणामों को देखेंगे जो या तो उपयोगकर्ता musicया उपयोगकर्ता के स्वामित्व में हैं moremusic। यदि आप परिणाम मिलान प्रक्रियाओं को देखना चाहते हैं जो दोनों उपयोगकर्ताओं के स्वामित्व में हैं, तो आपको ध्वज को पास करना होगा -a:

lsof -au music, moremusic

चूंकि दोनों उपयोगकर्ता समूह में हैं musicusers, तो आप समूह के आधार पर फाइलों को सूचीबद्ध कर सकते हैं:

lsof -g musicusers

आप कमांड लाइन के झंडे भी जोड़ सकते हैं:

lsof -u music,moremusic -c mocp

or

lsof -u ^music +D /home/Music

अंतिम पंक्ति में, हमने एक और विशेष ध्वज जोड़ा - ^जो एक तार्किक नहीं के लिए खड़ा है । यदि उस कमांड को चलाने के बाद आउटपुट खाली है, तो सबसे अधिक संभावना सफल होगी।

पिछले उदाहरणों में, हमने ज्यादातर नियमित फाइलों को देखा। सॉकेट्स और नेटवर्क कनेक्शन के बारे में कैसे?

सूचीबद्ध करने के लिए सभी मौजूदा नेटवर्क कनेक्शन lsofहै -iझंडा:

lsof -i

आउटपुट जैसा दिखता है, वैसा अब तक हमने देखा है ...

COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
owncloud  3509  myuser   25u  IPv4  44946      0t0  TCP strix.local:34217->myserver.vultr.com:https (ESTABLISHED)
firefox   3612  myuser   82u  IPv4  49663      0t0  TCP strix.local:43897->we-in-f100.1e100.net:https (ESTABLISHED)
ssh       3784  myuser    3u  IPv4  10437      0t0  TCP strix.local:51416->someserver.in:ssh (ESTABLISHED)
wget      4140  myuser    3w  IPv4  45586      0t0  TCP strix.local:54460->media.ccc.de:http (CLOSE_WAIT)

... एक अंतर को छोड़कर: फ़ाइल नाम या निर्देशिका के बजाय, स्तंभ NAMEअब कनेक्शन जानकारी दिखाता है। प्रत्येक कनेक्शन में निम्नलिखित भाग होते हैं:

  • मसविदा बनाना।
  • स्थानीय होस्टनाम।
  • कनेक्शन का स्रोत पोर्ट।
  • गंतव्य DNS नाम।
  • गंतव्य बंदरगाह।
  • कनेक्शन की स्थिति।

कई अन्य उपकरणों के साथ, आप DNS नामों और बंदरगाहों ( -nऔर -Pक्रमशः) को हल करने का विकल्प चुन सकते हैं । ध्वज -iअतिरिक्त पैरामीटर लेता है। आप निर्दिष्ट कर सकते हैं कि क्या दिखाना है या नहीं tcp, udpया icmpकनेक्शन या कुछ पोर्ट:

lsof -i :25
or
lsof -i :smtp

फिर से, मापदंडों को जोड़ा जा सकता है। निम्न उदाहरण ...

lsof -i tcp:80

... केवल पोर्ट 80 का उपयोग करके आपको टीसीपी कनेक्शन दिखाएगा। आप इसे उन विकल्पों के साथ भी जोड़ सकते हैं जिन्हें आप "क्लासिक" फाइलों से जानते हैं:

lsof -a -u httpd -i tcp

यह आपको उपयोगकर्ता द्वारा खोले गए सभी टीसीपी कनेक्शन दिखाएगा httpd-aध्वज को नोट करें , जो lsof(जैसा कि पहले उल्लेख किया गया है) डिफ़ॉल्ट व्यवहार को बदलता है । अधिकांश कमांड-लाइन टूल के साथ, आप बेहद गहरे जा सकते हैं। निम्नलिखित केवल आपको टीसीपी कनेक्शन दिखाएगा जिसका राज्य "ESTABLISHED" है:

lsof -i -s TCP:ESTABLISHED

इस बिंदु पर, आपको lsofकुछ सामान्य उपयोग मामलों के साथ-साथ कैसे काम करता है, इस पर एक बुनियादी समझ होनी चाहिए । आगे पढ़ने के लिए, lsofअपने सिस्टम का मैनपेज देखें ।



Leave a Comment

Ubuntu 16.04 पर लाइटकार्ट शॉपिंग कार्ट प्लेटफ़ॉर्म कैसे स्थापित करें

Ubuntu 16.04 पर लाइटकार्ट शॉपिंग कार्ट प्लेटफ़ॉर्म कैसे स्थापित करें

LiteCart PHP, jQuery और HTML में लिखा गया एक स्वतंत्र और ओपन सोर्स शॉपिंग कार्ट प्लेटफॉर्म है। यह ई-कॉमर्स सॉफ्टवेअर का उपयोग करने के लिए एक सरल, हल���का और आसान है

डेबियन पर सेटअप NFS शेयर

डेबियन पर सेटअप NFS शेयर

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

मोटोमो एनालिटिक्स को फेडोरा 28 पर कैसे स्थापित करें

मोटोमो एनालिटिक्स को फेडोरा 28 पर कैसे स्थापित करें

एक अलग प्रणाली का उपयोग? माटोमो (पूर्व में पिविक) एक ओपन सोर्स एनालिटिक्स प्लेटफॉर्म है, जो गूगल एनालिटिक्स का एक खुला विकल्प है। Matomo स्रोत को होस्ट किया गया है

Linux पर एक TeamTalk Server सेटअप करें

Linux पर एक TeamTalk Server सेटअप करें

टीमटॉक एक कॉन्फ्रेंसिंग प्रणाली है जो उपयोगकर्ताओं को उच्च-गुणवत्ता वाले ऑडियो / वीडियो वार्तालाप, टेक्स्ट चैट, स्थानांतरण फ़ाइलें और स्क्रीन साझा करने की अनुमति देती है। यह मैं

विंडोज सर्वर पर Garrys मॉड कैसे स्थापित करें

विंडोज सर्वर पर Garrys मॉड कैसे स्थापित करें

परिचय यह आलेख बताएगा कि विंडोज सर्वर 2012 पर गारस मोड सर्वर को कैसे डाउनलोड और इंस्टॉल किया जाए। यह गाइड गहराई में होने के लिए बनाया गया है।

कैसे स्थापित करें और अपने CentOS 7 सर्वर पर CyberPanel कॉन्फ़िगर करें

कैसे स्थापित करें और अपने CentOS 7 सर्वर पर CyberPanel कॉन्फ़िगर करें

एक अलग प्रणाली का उपयोग? परिचय CyberPanel बाजार पर पहला नियंत्रण पैनल है जो दोनों खुला स्रोत है और OpenLiteSpeed ​​का उपयोग करता है। क्या थी?

CentOS पर FFmpeg कैसे स्थापित करें

CentOS पर FFmpeg कैसे स्थापित करें

FFmpeg ऑडियो और वीडियो रिकॉर्ड करने, कन्वर्ट करने और स्ट्रीम करने के लिए एक लोकप्रिय ओपन सोर्स समाधान है, जो सभी प्रकार की ऑनलाइन स्ट्रीमिंग सेवाओं में व्यापक रूप से उपयोग किया जाता है। मैं

SSH का उपयोग करके LUKS डिस्क एन्क्रिप्शन पर LVM को दूरस्थ रूप से अनलॉक करने के लिए CentOS 7 स्थापित और सेटअप करें

SSH का उपयोग करके LUKS डिस्क एन्क्रिप्शन पर LVM को दूरस्थ रूप से अनलॉक करने के लिए CentOS 7 स्थापित और सेटअप करें

एलयूकेएस (लिनक्स यूनिफाइड की सेटअप) लिनक्स के लिए उपलब्ध विभिन्न डिस्क एन्क्रिप्शन प्रारूपों में से एक है जो प्लेटफॉर्म एग्नॉस्टिक है। यह ट्यूटोरियल आपको बुद्धि प्रदान करेगा

अपने Vultr VPS को कैसे एक्सेस करें

अपने Vultr VPS को कैसे एक्सेस करें

Vultr अपने VPS को कॉन्फ़िगर करने, स्थापित करने और उपयोग करने के लिए कई अलग-अलग तरीके प्रदान करता है। क्रेडेंशियल एक्सेस करें आपके VPS के लिए डिफ़ॉल्ट एक्सेस क्रेडेंशियल ar

CentOS 7 पर अक्टूबर CMS को कैसे स्थापित करें

CentOS 7 पर अक्टूबर CMS को कैसे स्थापित करें

अक्टूबर एक खुला स्रोत सामग्री प्रबंधन प्रणाली है जो लारवेल PHP फ्रेमवर्क पर आधारित है। एक सुरुचिपूर्ण इंटरफ़ेस और एक संक्षिप्त मॉड्यूलर वास्तुकला के साथ