2010-07-09 16 views
18

मैं सबसे सरल उदाहरण होने के साथ, कुछ स्क्रिप्ट जहाँ मैं उत्पादन और एक फाइल करने के लिए परिणाम के लिए लॉग इन देखने की जरूरत है:बैश में आउटपुट कैसे लॉग इन करें और इसे टर्मिनल में एक ही समय में देखें?

$ update-client > my.log 

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

उत्तर

34
update-client 2>&1 | tee my.log 

2> & 1 मानक आउटपुट में मानक त्रुटि पुनर्निर्देश, और टी मानक आउटपुट और फाइल करने के लिए अपने मानक इनपुट भेजता है।

+1

तुम भी लॉग फ़ाइल जोड़ सकते हैं, जैसा कि यहां बताया, और टी के साथ अन्य सामान कार्य करें: http://linux.101hacks.com/unix/tee-command- उदाहरण/ – thegeek

4

फ़ाइल को देखने के लिए पूंछ का उपयोग करें क्योंकि यह अपडेट किया गया है। पृष्ठभूमि अपने उपरोक्त आदेश के बाद & जोड़ने आप आदेश पर अमल करने के बाद ऊपर सिर्फ

$ tail -f my.log 

यह लगातार अपडेट हो जाएगा का उपयोग करके अपने मूल प्रक्रिया। (कृपया ध्यान दें यह आपको बता नहीं होगा फ़ाइल पूंछ बाहर निकलने के लिए, ताकि आप लॉग में उत्पादन कुछ बताने के लिए कर सकते हैं यह समाप्त हो गया चलना समाप्त कर दिया है। Ctrl-ग)

+2

इस पर वाह कठिन भीड़। इस जवाब के साथ वास्तव में क्या गलत है? – Cfreak

+2

मेरी राय में 'टीई' का उपयोग करने से हजारों गुना बदतर है। –

+0

मुझे पृष्ठभूमि में प्रक्रिया चलाने की आवश्यकता है –

4

एक और विकल्प के भीतर से ब्लॉक आधारित उत्पादन पर कब्जा उपयोग करने के लिए है स्क्रिप्ट (सुनिश्चित नहीं है कि यह सही तकनीकी शब्द है)।

उदाहरण

#!/bin/bash 
{ 
    echo "I will be sent to screen and file" 
    ls ~ 
} 2>&1 | tee -a /tmp/logfile.log 

echo "I will be sent to just terminal" 

मैं अधिक नियंत्रण और लचीलापन लेना पसंद - तो मैं इस तरह से पसंद करते हैं। और

command > /path/to/logfile 

आप संलग्न करना चाहते हैं (>>) उत्पादन दिखाने: खोल के लिए लिख बिना

command | tee /path/to/logfile 

बराबर होगा:

+0

धन्यवाद, यह perfecly काम किया – wiak

2

आप उस के लिए टी आदेश का उपयोग कर सकते हैं खोल में, -एक विकल्प का उपयोग:

command | tee -a /path/to/logfile 

कृपया ध्यान दें कि पाइप एसटीडी stdout केवल त्रुटियां पकड़ेगा टीई के साथ पाइप द्वारा संसाधित नहीं किया जाता है। आप (stderr से) त्रुटियों लॉग इन करना चाहते हैं, तो उपयोग:

command 2>&1 | tee /path/to/logfile 

इसका मतलब यह है: रन कमांड और stderr धारा अनुप्रेषित (2) stdout करने के लिए (1)। यह टीई आवेदन के साथ पाइप को पारित किया जाएगा।

askubuntu स्थल पर इस बारे में जानें