2010-12-14 14 views
19

से पिछली एन लाइनों को पकड़ो मैं एक शेल स्क्रिप्ट बनाना चाहता हूं जो कंसोल पर आउटपुट किए गए स्टैर और स्टिन से पिछली एन लाइनों को प्रभावी ढंग से पकड़ लेगा। मैं एक स्क्रीन सत्र एक प्रक्रिया अगर यह एक hacky अनंत लूप के माध्यम से दुर्घटनाओं है कि यह फिर से शुरु होगा चल रहा है:कंसोल आउटपुट

#!/bin/bash 
#This script will be started in a screen session 
counter=0 
while [ $counter -lt 10 ]; do 
    ./run_some_process; 
    last_output=#GRAB PREVIOUS OUTPUT FROM CONSOLE HERE AND LOG TO FILE 
    echo -e "$last_output" >> mylog.txt; 
    sleep 5; #sleep for a few seconds before restarting 
done 

क्या मैं जरूरत कोड के 7 वें लाइन stderr और stdin से पिछले 10 या इतने लाइनों आकर्षित करने के लिए के लिए है और एक लॉग फ़ाइल

उत्तर

42
./run_some_process 2>&1 | tail -10 >>logfle 

tail -10 आप पिछले दस लाइनों दे देंगे करने के लिए उन्हें संलग्न, 2>&1 stderr करने के लिए stdout पुनर्निर्देश, >>logfle लॉगफ़ाइल को जोड़ देता है।

+1

धन्यवाद! एक लिल 'परिवर्तन: ./run_some_process 2> और 1 | पूंछ -10 >> logfle stdout पर जाने के लिए stderr की तरह लग रहा है, तो यह इसे पाइप में बना देगा। – Hersheezy

+0

ओह हाँ क्षमा करें, मेरी गलती ^^ " –

संबंधित मुद्दे