किसी एरर.लॉग फ़ाइल की सामग्री को कैसे मिटाएँ लेकिन फ़ाइल को अक्षुण्ण रखें


25

मैं फ़ाइल error.log (nginx त्रुटि लॉग फ़ाइल) की सामग्री को मिटाना चाहता हूं, लेकिन मैं वास्तव में फ़ाइल को हटाना नहीं चाहता।

क्या यह संभव है?

ubuntu चल रहा है

जवाबों:


68

आप इसका उपयोग कर सकते हैं:

>error.log

(ठीक उसी तरह टाइप किया गया - एक खाली आउटपुट पुनर्निर्देशन)

या

truncate -s0 error.log

@ इग्नासियो: यदि फ़ाइल पहले से मौजूद है, तो या तो इसे छोटा कर देगी। यदि फ़ाइल मौजूद नहीं है, तो इसे बनाएगा।
अगली सूचना तक रोक दिया गया।

तुम सही हो, मेरा बुरा।
इग्नासियो वाज़केज़-अब्राम्स

आखिरी विकल्प ने मेरे लिए काम किया, किसी कारण से sudo>
error.log

5
@davidkonrad: प्रभावी होने से पहले ही कार्य करने के लिए पुनर्निर्देशन के लिए आपको पहले से ही रूट होना चाहिए sudo। या आप कर सकते हैंsudo bash -c '>error.log'
अगली सूचना तक रोक दिया गया।

1
@ divHelper11: मेरे जवाब में मैं कहता हूं कि यह "खाली आउटपुट पुनर्निर्देशन" है। इसका मतलब है कि नामित फ़ाइल में "कुछ भी नहीं" भेजा जा रहा है और यह किसी भी मौजूदा सामग्री को अधिलेखित करता है। यह समान है echo "some words" > output.txtलेकिन कुछ भी नहीं जा रहा है।
अगली सूचना तक रोक दिया गया।

1

आप डेमन को भ्रमित करेंगे। फ़ाइल मिटाएँ फिर SIGHUPnginx को भेजें ।


उच्छ्वास करो? क्या मैं नेगनेक्स को बंद नहीं कर सकता, फ़ाइल को शुद्ध कर सकता हूं, फिर शुरू करें? मैं जानना चाहता हूं कि ज्ञान की खातिर फाइल को कैसे मिटाया जाए।
user27449

यदि आप सुनिश्चित करना चाहते थे। लेकिन इससे सेवा बाधित होगी।
इग्नासियो वाज़केज़-अब्राम्स

मुझे लगता है कि दोनों एक अनुप्रेषित पुनर्निर्देशन और एक truncateपरमाणु हैं, इसलिए जब तक कोई मांग नहीं हो रही है (विशेषकर यदि केवल जो ऑपरेशन हो रहा है, वह लंबित है) यह विघटनकारी नहीं होना चाहिए।
अगली सूचना तक रोक दिया गया।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.