पता करें कि हार्ड ड्राइव पर कौन सी प्रक्रियाएं लिख रही हैं


31

मेरे लेनोवो T400 और उबंटू पर, हार्ड ड्राइव लेखन के लिए प्रकाश चमकता रहता है। मैं सोच रहा था कि क्या लिनक्स में यह पता लगाना संभव है कि हार्ड ड्राइव पर I / O क्या प्रक्रियाएं कर रहा है? बस इसी तरह top, आप यह पता लगा सकते हैं कि अधिकांश सीपीयू और मेमोरी क्या प्रक्रियाएं उपयोग कर रहे हैं।

जवाबों:


41

Iotop आप क्या चाहते हैं के लिए एक अच्छा उपकरण है। यह किसी को भी DISK READ, DISK WRITE, SWAPIN, और IO (समग्र प्रतिशत) पर I / O की संचित राशि प्रदर्शित करने की अनुमति देता है। यह निफ्टी इंटरफेस के माध्यम से है:

  • आप बस aकीबोर्ड पर प्रेस करते हैं, और यह शीर्ष पर सबसे भूख प्रक्रियाओं को सॉर्ट करेगा।
  • आदेश को उलटते हुए, आप बस दबाते हैं r
  • यदि आप अन्य कॉलम्स के आधार पर छांटना चाहते हैं, तो आप बस बाईं / दाईं कुंजी दबाएं।

जैसे top, प्रस्तुति बल्कि व्यस्त है। एक और बात यह है कि इसमें असंख्य विकल्प नहीं हैं top(उदाहरण के लिए मैं किसी भी कॉलम को अनइंस्टाल नहीं कर रहा हूं) को छिपाने के लिए नहीं चुना जा सकता, लेकिन यह टूल अपने विशिष्ट उद्देश्य के लिए पर्याप्त से अधिक अच्छा है।


3
लैपटॉप पर बैटरी का उपयोग करने के लिए पावरटॉप उपयोगी है; डिस्क एक्सेस की तलाश के लिए iotop अभी भी पहला स्थान है।
गिल्स एसओ- बुराई को रोकें '

एक पास -o( --only) वास्तव में किसी भी I / O नहीं करने वाले सभी कार्यों को फ़िल्टर कर सकता है। यह सूची को कम भीड़ बनाता है
Marcin Orlowski

15

आप lsof( आदमी lsof ) का उपयोग कर सकते हैं । निम्नलिखित उन सभी फाइलों की सूची लौटाएगा जो लिखने के लिए खुली हैं:

lsof | grep -e "[[:digit:]]\+w"

1
कौन सी फाइलें खुली हैं, और वास्तव में किन फ़ाइलों को एक्सेस किया जा रहा है, दो अलग-अलग चीजें हैं।
Psusi

@psusi लिखने के लिए एक खुली फ़ाइल बहुत संभव है "पहुँचा जा रहा है।" इसके अलावा, अधिक जानकारी को इसके मैनपेज के माध्यम से lsof सीखकर प्राप्त किया जा सकता है।
जेम्स सुमेर जूल

5
लिखने के लिए खुली हुई फाइलें किसी बिंदु पर लिखी जा सकती हैं, लेकिन अभी जरूरी नहीं है। कई फाइलें खुली रखी जाती हैं, लेकिन शायद ही कभी लिखी जाती हैं। दूसरी ओर, लिखी जा रही फाइलों को खोला और बंद किया जा सकता है और इसलिए यह lsof में दिखाई नहीं देगी। किसी भी तरह से, यह पता लगाने में थोड़ी मदद करता है कि डिस्क पर वास्तव में क्या प्रक्रिया लिख ​​रही है।

wमेकअप उपरोक्त आदेश से आप फ़ाइलों को लिखने के लिए खुले हैं के लिए grep केवल । लिखने और पढ़ने ( u) के लिए खुली हुई फाइलें प्रदर्शित नहीं होंगी, लेकिन उन्हें भी लिखा जा सकता है। यदि आप लिखने के लिए और पढ़ने + लिखने के लिए फ़ाइलें खोलना चाहते हैं, तो मुझे विश्वास है कि आप यही देख रहे हैं:lsof | grep -e "[[:digit:]]\+[wu]\{1\}"
Martijn

1
@Martijn आप एक अन्य कॉलम के अंदर grep -e**w**मिलान से बचने के लिए उपयोग करना चाहेंगे[0-9]\+[wu]

2

का उपयोग करें strace


6
यह आपको बताने जा रहा है कि एक विशेष प्रक्रिया क्या कर रही है, यह पता लगाने में मदद नहीं करेगा कि कौन सी प्रक्रिया कुछ कर रही है।
गिलेस एसओ- बुराई को रोकना '

2

विशेष रूप से कम डिस्क गतिविधि के लिए, छोटे मोड को जल्दी से गायब होने से रोकने के लिए, बैच मोड में iotop का उपयोग करना आवश्यक है। द्वारा जवाब मैं फाइल सिस्टम कैसे लॉग ऑन करते लिनक्स में फ़ाइल नाम द्वारा / राईट पढ़ा है? यह कैसे करना है दिखाता है।

अब तक iotopका सबसे अच्छा समग्र समाधान है। निम्नलिखित कमांड आपको डिस्क का उपयोग करके सभी प्रक्रियाओं का एक वास्तविक समय आउटपुट देता है।

iotop -bktoqqq -d .5

where: -b     is batch mode
       -k     is kilobytes/s
       -t     adds timestamp
       -o     only show processes or threads actually doing I/O
       -qqq   removes output headers
       -d .5  updates every .5 seconds

एक बार आपके पास प्रोसेस आईडी होने के बाद, आप फाइलों को भी ढूंढ सकते हैं

 lsof -p $PID

1
यह उत्तर उपरोक्त (बहुत पुराने) उत्तरों से कैसे भिन्न है? किसी पुराने प्रश्न का उत्तर देते समय यह बताना अच्छा होता है कि आपका उत्तर पिछले उत्तरों से कैसे भिन्न होता है। यह पाठकों को उत्तरों के बीच क्रमबद्ध करने में मदद करता है।
स्टीफन राउच

इस पर ध्यान दिलाने के लिए धन्यवाद। मैंने आपकी टिप्पणी को ध्यान में रखते हुए इस उत्तर को संपादित किया है।
फ्रैंक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.