मैंने उपयोग करके लिनक्स में एक फाइल को हटाने की कोशिश की rm -rf file_name
, लेकिन त्रुटि मिली:
rm: file_name not removed. Text file busy
मैं कैसे पता लगा सकता हूं कि कौन सी प्रक्रिया इस फ़ाइल का उपयोग कर रही है?
जवाबों:
आप fuser
कमांड का उपयोग कर सकते हैं , जैसे:
fuser file_name
आपको फ़ाइल का उपयोग करके प्रक्रियाओं की एक सूची प्राप्त होगी।
अधिक विस्तृत आउटपुट प्राप्त करने के लिए, आप इसके साथ विभिन्न झंडे का उपयोग कर सकते हैं।
आप fuser के विकिपीडिया लेख में या man
पृष्ठों में अधिक जानकारी पा सकते हैं ।
fuser
कार्यान्वयन समान नहीं हों, या समान तरीके से काम करते हों। यहां तक कि अगर -i
पोसिक्स में परिभाषित किया गया है, तो आप जिस विशेष कार्यान्वयन का उपयोग कर रहे हैं, जरूरी नहीं कि वे वही विकल्प हैं जो विकिपीडिया लेख में वर्णित हैं। उदाहरण के लिए, मैं अभी AIX का उपयोग कर रहा हूं, और fuser
इस प्रणाली में उपलब्ध -i
विकल्प के पास भी नहीं है ।
@ jim का जवाब सही है - fuser
जो आप चाहते हैं।
इसके अतिरिक्त (या वैकल्पिक रूप से), lsof
प्रक्रिया को मारने के लिए आपको (अतिरिक्त आदेश चलाने के बिना) अनुमति की आवश्यकता होने पर, उपयोगकर्ता नाम सहित अधिक जानकारी प्राप्त करने के लिए उपयोग कर सकते हैं । (निश्चित रूप से, अगर प्रक्रिया को मारना है जो आप चाहते हैं, fuser
तो वह अपने -k
विकल्प से कर सकता है। आप विकल्प के fuser
साथ अन्य संकेतों का उपयोग कर सकते हैं -s
- विवरण के लिए मैन पेज की जांच करें।)
उदाहरण के लिए, tail -F /etc/passwd
एक विंडो में चलने के साथ :
ghoti@pc:~$ lsof | grep passwd
tail 12470 ghoti 3r REG 251,0 2037 51515911 /etc/passwd
ध्यान दें कि आप यह lsof
जानने के लिए भी उपयोग कर सकते हैं कि कौन सी प्रक्रियाएं विशेष सॉकेट्स का उपयोग कर रही हैं। आपके शस्त्रागार में एक उत्कृष्ट उपकरण है।
lsof | head -1
सभी हेडर देखने के लिए।
lsof | grep -E "PID|<your_process_name>"
1 पंक्ति और उस प्रक्रिया को दिखाता है जिसे आप क्वेरी करना चाहते हैं।
tree
stdin से कुछ भी पढ़ा है? यदि हाँ, तो यह उस इनपुट के साथ क्या करता है?
tree
, नहीं lsof
। जहां तक मैं समझता हूं, tree
मानक इनपुट से नहीं पढ़ता है, इसलिए जब आप चलते हैं तो आउटपुट lsof
को छोड़ दिया जाता है lsof | tree ...
। यदि यह सही है, तो lsof | tree MyFold
वही है tree MyFold
, जो केवल सामग्री को प्रदर्शित करता है, लेकिन कुछ प्रक्रियाओं द्वारा नहीं खोला जाता है।