मैं सीरियल डिवाइस द्वारा आउटपुट की गई प्रत्येक लाइन को टाइमस्टैम्प कैसे कर सकता हूं?


2

मैं के माध्यम से एक धारावाहिक माप उपकरण का उपयोग screen /dev/tty.usbserial 9600। जबकि डिवाइस इसे माप रहा है अपने डेटा को आउटपुट करता है n एक पंक्ति पर प्रति सेकंड बार। मैं हर लाइन (या हर कुछ पंक्तियों को टाइमस्टैम्प कैसे जोड़ सकता हूं, अगर यह लॉग को बहुत धीमा कर देती है)?

मैं OSX 10.8.2 पर हूं और मेरे टर्मिनल के रूप में Terminal.app का उपयोग करता हूं।

जवाबों:


2

मुझे स्क्रीन टाइमस्टैम्प प्रिंट करने का कोई तरीका नहीं मिला। इसके बजाय, स्क्रीन की लॉग फ़ाइल बनाना और इसे awk के साथ प्रिंट करना अच्छी तरह से काम करता है!

1. लॉग फ़ाइल बनाने के लिए स्क्रीन बनाने के लिए (या संपादित करें) ~ /।

लॉगिंग कॉन्फ़िगरेशन को अपने होम निर्देशिका में। स्क्रीनशॉट (स्क्रीन की कॉन्फ़िगरेशन फ़ाइल) में जोड़ें।

logfile "/path/to/log/file" # Specify log file name with absolute path.
logfile flush 1
deflog on

2. स्क्रीन शुरू करें

$ screen /dev/tty.usbserial 9600 -L

फिर स्क्रीन एक लॉग फ़ाइल बनाना शुरू करती है। (लॉग फाइल बनाने के कुछ अन्य तरीके भी हैं।)

3. फ़ाइल को टेल + awk के साथ प्रिंट करें

इस शेल कमांड को किसी अन्य टर्मिनल विंडो में चलाएं।

$ tail -f screen.log | awk '{ print strftime("%H:%M:%S"), $0; fflush(); }'

यह टाइमस्टैम्प के साथ लॉग फ़ाइल को प्रिंट करता है!

15:41:27 xxx
15:41:28 xxx
15:41:29 xxx
15:41:30 xxx
15:41:31 xxx

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

$ tail -f /path/to/log/file | awk '{print strftime("%H:%M:%S"),$0; fflush();}' | tee /path/to/another/file
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.