लिनक्स में फाइल करने के लिए टेल प्रोग्राम आउटपुट


9

मुझे पता है कि हम स्क्रीन आउटपुट को फ़ाइल में रीडायरेक्ट करने के लिए नीचे प्रारूप का उपयोग कर सकते हैं:

$ your_program > /tmp/output.txt

हालाँकि जब मैंने कमांड के नीचे इस्तेमाल किया, तो यह कहता है "-बश: /home/user/errors.txt: अनुमति अस्वीकृत"

sudo tail /var/log/apache2/error.log > ~/errors.txt

क्या मुझे पता है कि यह आउटपुट कैसे काम करता है? ~ / Error.txt मौजूद नहीं है। क्या मुझे पुनर्निर्देशित कमांड का उपयोग करने से पहले पहले इस txt फ़ाइल को बनाने की आवश्यकता है?


1
टाइप करने पर क्या होता है echo hi > ~/errors.txt? क्या /home/userआपकी सही होम डायरेक्टरी है (या बैश किसी तरह से भ्रमित हो गई कि आपका होम डायरेक्टरी कहां है)?
cjm

क्या userउपयोगकर्ता जो कमांड चलाता है?
उपयोगकर्ता अनजान

हां, उपयोगकर्ता वह उपयोगकर्ता है जो कमांड चलाता है
जियानलिन

यह सामान्य व्यवहार है sudosudoपुनर्निर्देशन की अनुमति नहीं देता है। बहुत सारे तरीके लोगों को sudoers.confफ़ाइल में शामिल न होने वाली शरारती चीजों को करने के लिए उपयोग करने में सक्षम होने के लिए । एक विकल्प के रूप में, आप sudo bash -c "tail /var/log/apache2/error.log > ~/errors.txt"त्रुटियों की समाप्ति को समाप्त करने के लिए दौड़ सकते हैं । अपने होम डायर में फाइल पर जाएं।
टिम कैनेडी

जवाबों:


17

पाइप के पीछे, sudo काम नहीं करता है। मुझे नहीं पता कि आप अपने घर को क्यों नहीं लिख सकते - शायद फाइल रूट की है?

 sudo tail /var/log/apache2/error.log | sudo tee ~/errors.txt

हो सकता है कि आपको पाइप के पीछे एक अलग उपयोगकर्ता की आवश्यकता हो। सुनिश्चित करने के लिए, आपको एक preexisting फ़ाइल की आवश्यकता नहीं है।


हां, यह काम किया ...
जियानलिन

अनुमति समस्या के रूप में, हो सकता है कि $ HOME एनएफएस-रूटक्श के साथ घुड़सवार हो?
अंसार एसेटरमैन

$ HOME एनएफएस माउंटेड नहीं है।
जियानलिन

6

जब आप लिखते हैं sudo somecommand > ~/errors.txt, तो शेल जो कॉल कर रहा है sudo(और आपके अनुसार चल रहा है) वह रीडायरेक्शन और ओपनिंग करने वाला है ~/errors.txtजिस फ़ाइल पर आपकी अनुमति नहीं है, उसे रीडायरेक्टिंग स्टडआउट देखें । आमतौर पर उस मामले में समस्या यह है कि आप फ़ाइल को लिखने के लिए रूट चाहते हैं; ऐसा करने के तरीकों के लिए जुड़ा हुआ प्रश्न देखें।

यहाँ, यह अजीब है कि आप अपने घर निर्देशिका में एक फ़ाइल को नहीं लिख सकते हैं। संभावना है कि आपने पहले कुछ आउटपुट को रूट के रूप में सहेजा है /home/user/errors.txtऔर वह फ़ाइल अब मौजूद है और रूट से संबंधित है। फ़ाइल को निकालें (आप ऐसा कर सकते हैं कि जब तक आपके पास अनुमति है /home/user, और तब आप इसे अपने उपयोगकर्ता के रूप में बना पाएंगे।

rm ~/errors.txt
sudo tail /var/log/apache2/error.log > ~/errors.txt

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


मैंने '/home/user/errors.txt' को हटाने और अपने उपरोक्त आदेश का उपयोग करने का प्रयास किया। यह काम नहीं किया, फिर भी मुझे घर निर्देशिका में लिखने के लिए मना किया। वैसे भी मुझे लगता है कि आपके द्वारा दी गई लिंक मेरे समाधान के रूप में उपयोग की जा सकती है। यह इस पोस्ट के पहले उत्तर के समान है। हालाँकि आपने फ़ाइल पर रीडायरेक्ट करने के लिए कुछ विस्तृत विवरण दिया है और इसके लिए मैं आपको धन्यवाद देता हूँ।
जियानलिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.