आउटपुट फ़ाइल में आवक आउटपुट (आवधिक, निरंतर इनपुट के साथ) पाइप कैसे करें?


10

मैं एक कमांड लिखने की कोशिश कर रहा हूं जो एक फ्री कमांड के निरंतर आउटपुट को पाइप करता है (हर सेकंड रन करें) एक अजीब कमांड को देता है जो एक विशिष्ट मूल्य (उपलब्ध फ्री मेमोरी) को पार्स करता है और इसे टाइमस्टैम्प के साथ फाइल में आउटपुट करता है। यहाँ कमांड पर मेरे वर्तमान प्रयास हैं:

free -mto -s 1 | awk '/Mem/ { print strftime("%r") "," $4 }' >>memOut

और वैकल्पिक रूप से, थोड़ा सा Googling के बाद

free -mto -s 1 | awk '/Mem/ { print strftime("%r") "," $4 >>"memOut"}'

प्रत्येक रन खाली फ़ाइलों का उत्पादन करता है। किसी भी सुझाव या संभवतः विभिन्न तरीकों?

जवाबों:


13

आपको memOutनिष्पादन के दौरान कुछ देखने के लिए बफर को फ्लश करना होगा :

free -mto -s 1 | awk '/Mem/ { print strftime("%r") "," $4; fflush(stdout) }' >> memOut

यहाँ एक वैकल्पिक संस्करण है:

while sleep 1; do sed -n "s/MemFree: */`date`, /p" /proc/meminfo; done >> memOut

इससे मुझे वह आउटपुट फ़ाइल मिली जो मुझे चाहिए थी। धन्यवाद!
मार्क

3

पुराने संस्करणों के लिए awkआपको उपयोग करना पड़ सकता है system("")

वास्तव में, fflush(stdout)के हाल के संस्करणों के लिए के लिए ही है awkऔर gawkइसकी केवल POSIX मानक दिसंबर 2012 के बाद से के रूप में,।

free -mto -s 1 | awk '/Mem/ { 
    print strftime("%r") "," $4;
    system(""); # Flush output
}' >> memOut

ध्यान दें कि का उपयोग कर system("")flushes हर फ़ाइल वर्णनकर्ता, अपने पूर्ण विवरण में है gawkमैनुअल, खंड "9.1.4 इनपुट / आउटपुट कार्य"।


3

के कुछ संस्करणों पर awk(उदाहरण के लिए 1.3.3 mawk) आपको -W interactiveपाइप के साथ असंबद्ध संचालन को सक्षम करने के लिए कमांड लाइन के ध्वज को जोड़ने की आवश्यकता है ।


2

बस यह सुनिश्चित करने के लिए कि आपको वही मिल रहा है जो आप वास्तव में चाहते हैं और न कि जो आपने विशेष रूप से पूछा है।

यदि आप प्रोग्राम के लिए सिस्टम पर उपलब्ध मेमोरी जानना चाहते हैं तो यह अधिक उपयुक्त हो सकता है:

free -m -s 1 | awk '/buffers\/cache/ { print strftime("%r") "," $4; fflush(stdout) }' >> memOut

मेम लाइन के प्रयुक्त कॉलम में कैश और बफ़र्स शामिल हैं और ज्यादातर मामलों में जब आप दिए गए कंप्यूटर / कार्य के लिए मेमोरी उपयोग की निगरानी करना चाहते हैं, जिन्हें कम से कम नोट किया जाना चाहिए।

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