Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रणाली >> Linux

Linux में खुली फ़ाइलों को सूचीबद्ध करने के लिए lsof कमांड का उपयोग कैसे करें

Linux के बारे में अच्छी बात यह है कि आप बूट प्रक्रिया से लेकर सॉफ़्टवेयर पैकेज की इंस्टॉलेशन तक सब कुछ आसानी से देख और मैनेज कर सकते हैं। यहां हम चर्चा करते हैं कि आप Linux में lsof कमांड का उपयोग खुली फ़ाइलों और उनका उपयोग करने वाली प्रक्रियाओं को देखने के लिए कैसे कर सकते हैं। यह जानना कि इसे कैसे देखना है, आपको यह समझने में मदद कर सकता है कि सिस्टम कैसे काम करता है और यहां तक कि विशिष्ट प्रक्रियाओं के लिए आवश्यक कार्रवाई भी कर सकता है।

Lsof कमांड

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

हालांकि, यदि आपके पास यह इंस्टॉल नहीं है, तो आप इसे अपने सिस्टम पर इंस्टॉल करने के लिए पैकेज मैनेजर का उपयोग कर सकते हैं।

Debian/Ubuntu

Debian पर, कमांड चलाएं:

sudo apt-get install lsof

Arch/Manjaro

Manjaro और अन्य Arch-आधारित वितरणों पर, pacman का उपयोग करके कमांड चलाएं:

sudo pacman -S lsof

CentOS/REHL/Fedora

CentOS और REHL परिवार के लिए, आप dnf का उपयोग कर सकते हैं:

sudo dnf install lsof

Linux प्रक्रिया के लिए खुली फ़ाइलों को सूचीबद्ध करने के लिए lsof कमांड का उपयोग करें

अधिकांश Linux कमांड्स की तरह, lsof यूटिलिटी उपयोग करने के लिए अविश्वसनीय रूप से सरल है। lsof कमांड टाइप करके शुरू करें:

sudo lsof

एक बार जब आप उपरोक्त कमांड चलाते हैं, तो lsof को सिस्टम में खुली फ़ाइलों के बारे में जानकारी वापस करनी चाहिए।

COMMAND PID TID TASKCMD USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd DIR 8,48 4096 2 /
init 1 root rtd DIR 8,48 4096 2 /
init 1 root txt REG 0,19 632048 281474976743906 /init
init 1 root 0u CHR 1,3 0t0 15362 /dev/null
init 1 root 1u CHR 1,3 0t0 15362 /dev/null
init 1 root 2u CHR 1,3 0t0 15362 /dev/null
init 1 root 3w CHR 1,11 0t0 15367 /dev/kmsg
init 1 root 4u sock 0,8 0t0 22689 protocol: AF_VSOCK
init 1 root 5r REG 0,4 0 4026532185 mnt
init 1 root 6r REG 0,4 0 4026532201 mnt
init 1 root 7r DIR 8,48 4096 240 /home/cap
init 1 root 8u DIR 8,48 4096 2 /
init 1 root 9u sock 0,8 0t0 21853 protocol: AF_VSOCK

नोट: यदि आपके पास sudo विशेषाधिकार हैं, तो "permission denied" त्रुटियों से बचने के लिए विशिष्ट फ़ाइलों पर कमांड को sudo के साथ चलाएं।

ऊपर दिखाए गए आउटपुट के अनुसार, lsof आउटपुट में निम्न कॉलम हैं:

कॉलम प्रतिनिधित्व
Command लक्ष्य फ़ाइल का उपयोग करने वाली प्रक्रिया का नाम दिखाता है।
PID फ़ाइल का उपयोग करने वाली प्रक्रिया के लिए अद्वितीय पहचानकर्ता।
TID कॉलम थ्रेड पहचानकर्ता दिखाता है।
TASKCMD टास्क कमांड का नाम।
USER प्रक्रिया चलाने वाले यूज़र का यूज़रनेम या UID।
FD फ़ाइल डिस्क्रिप्टर और मोड्स।
TYPE लक्ष्य फ़ाइल से जुड़ा नोड।
DEVICE कॉमा से अलग डिवाइस नंबर।
SIZE/OFF बाइट्स में फ़ाइल साइज़ या फ़ाइल ऑफसेट साइज़
NODE लोकल फ़ाइल का इनोड मान। आप फ़ाइल के लिए inode जानकारी दिखाने के लिए stat कमांड का उपयोग कर सकते हैं।
NAME फ़ाइल का माउंट पॉइंट।

अब जब आप समझते हैं कि lsof कमांड प्रिंटआउट की सामग्री क्या दर्शाती है, तो आइए विशिष्ट जानकारी के लिए फ़िल्टर करने के लिए कमांड का उपयोग करें।

विशिष्ट प्रक्रिया के लिए फ़िल्टर कैसे करें

केवल विशिष्ट प्रक्रिया द्वारा खोली गई विशिष्ट फ़ाइलों को फ़िल्टर करने के लिए, हम या तो प्रक्रिया नाम या PID मान का उपयोग कर सकते हैं।

उदाहरण के लिए, firefox प्रक्रिया द्वारा उपयोग की जाने वाली फ़ाइलों को दिखाने के लिए, हम कमांड का उपयोग कर सकते हैं:

sudo lsof -c firefox
Linux में खुली फ़ाइलों को सूचीबद्ध करने के लिए lsof कमांड का उपयोग कैसे करें

कमांड firefox प्रक्रिया द्वारा खोली गई सभी फ़ाइलों को दिखाएगा।

प्रोसेस ID द्वारा फ़िल्टर करने के लिए, हम -p विकल्प का उपयोग कर सकते हैं और प्रोसेस ID पास कर सकते हैं। आप लक्ष्य प्रक्रिया की प्रोसेस ID प्राप्त करने के लिए top कमांड का उपयोग कर सकते हैं।

उदाहरण के लिए, firefox प्रक्रिया की PID प्राप्त करने के लिए, हम कमांड का उपयोग कर सकते हैं:

sudo ps aux | grep firefox

एक बार जब आपके पास लक्ष्य प्रक्रिया की PID हो, तो खुली फ़ाइलों को दिखाने के लिए lsof का उपयोग करें:

sudo lsof -p 2121
Linux में खुली फ़ाइलों को सूचीबद्ध करने के लिए lsof कमांड का उपयोग कैसे करें

उपरोक्त कमांड निर्दिष्ट PID वाली प्रक्रिया द्वारा खोली गई फ़ाइलों को प्रिंट करेगा।

विशिष्ट यूज़र के लिए फ़िल्टर कैसे करें

केवल किसी विशिष्ट यूज़र द्वारा खोली गई फ़ाइलों को देखने के लिए, हम -u फ्लैग का उपयोग कर सकते हैं। उदाहरण के लिए, debian यूज़र के लिए फ़िल्टर करने के लिए, कमांड का उपयोग करें:

sudo lsof -u debian
Linux में खुली फ़ाइलों को सूचीबद्ध करने के लिए lsof कमांड का उपयोग कैसे करें

विशिष्ट फ़ाइल के लिए फ़िल्टर कैसे करें

मान लीजिए आप केवल उस प्रक्रिया और यूज़र को जानना चाहते हैं जिसने एक विशिष्ट फ़ाइल खोली है। ऐसा करने के लिए, फ़ाइल का नाम lsof को पास करें:

sudo lsof /bin/sleep
Linux में खुली फ़ाइलों को सूचीबद्ध करने के लिए lsof कमांड का उपयोग कैसे करें

उपरोक्त केवल विशिष्ट फ़ाइल के लिए फ़िल्टर करेगा और यूज़र, प्रोसेस ID, और अधिक सहित संबंधित जानकारी वापस करेगा।

निष्कर्ष

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


  1. लिनक्स में  echo  कमांड का उपयोग कैसे करें लिनक्स में 'echo' कमांड का उपयोग कैसे करें

    चाहे आप लिनक्स में पूरी तरह से नए हों या लंबे समय से लिनक्स डेस्कटॉप का उपयोग कर रहे हों, कुछ कमांड्स ऐसी हैं जो समझ में नहीं आ सकतीं। यह विशेष रूप से सच है यदि आप कभी कमांड लाइन में गोता नहीं लगाते, जहां लिनक्स और अन्य यूनिक्स-जैसे ऑपरेटिंग सिस्टम की असली शक्ति निहित है। इनमें से एक है वेटरन echo क

  1. लिनक्स में tee कमांड का उपयोग कैसे करें लिनक्स में tee कमांड का उपयोग कैसे करें

    यदि आप कभी अपने लिनक्स शेल के तहत पाइप और रीडायरेक्शन का उपयोग करते हैं, तो संभावना है कि आपको कभी-कभी tee यूटिलिटी का उपयोग करने की भी आवश्यकता होगी। tee क्या करता है? ls जैसी कमांड आपके वर्तमान डायरेक्टरी की सामग्री प्रदर्शित करेगी। दूसरे शब्दों में, यह इन सामग्री को stdout (स्टैंडर्ड आउटपुट) पर प

  1. लिनक्स और macOS में fd का उपयोग करके फ़ाइलों को तेजी से कैसे खोजें लिनक्स और macOS में fd का उपयोग करके फ़ाइलों को तेजी से कैसे खोजें

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