अपाचे ने मैन्युअल रूप से इसकी सभी सामग्री हटाने के बाद लॉग फ़ाइल में लिखने से इंकार कर दिया


9

अपाचे ने फ़ाइलों ( ErrorLog/ CustomLogवाले) को लिखने से मना कर दिया है क्योंकि मैंने उनकी सामग्री को मैन्युअल रूप से हटा दिया है?

जब तक मैं अपाचे को पुनः आरंभ नहीं करूंगा, यह उन लॉग फ़ाइलों को फिर से नहीं लिखेगा।

यह एक केस क्यों है? अपाचे को पुनरारंभ किए बिना मैं लॉग फ़ाइल को सुरक्षित रूप से कैसे शुद्ध कर सकता हूं?

मेरे पास Ubuntu 10.04 पर Apache 2.2.14 है।


आप सामग्री को कैसे हटाते हैं?
डोम

@ मैं इसे केवल vim के साथ खोलता हूं, "dG" (जो सभी सामग्रियों को हटाता है), और "save with wq" करें। स्वामित्व / समूह / अनुमतियां नहीं बदली गई हैं।
एटॉमिकफ़ॉल्ट ऑक्ट

3
@AtomicFault Prrrobably क्योंकि यह नहीं है कि आप अपाचे लॉग को कैसे घुमाने वाले हैं । आपको कुछ ऐसा उपयोग करना चाहिए, logrotateजो अपाचे को एक उपयुक्त पुनः लोड / पुनरारंभ संकेत भेजता है (नीचे पेड्रो का जवाब देखें)। निकग्रिम ने आपके लॉग को रोकने के पीछे "क्यों" को कवर किया - अपाचे अभी भी पुराने इनोड पर लिख रहा है (जो अब आप इसे प्राप्त करने के लिए कहीं भी फाइलसिस्टम से जुड़ा नहीं है)
voretaq7

जवाबों:


14

मैंने अभी एक संक्षिप्त परीक्षण किया:

$ echo vim test > vimtest
$ ls -i vimtest
35149 vimtest
$ vim vimtest
<dG, :wq>
$ ls -i vimtest
35148 vimtest

ध्यान दें कि vimtestइसे संपादित करने के बाद एक अलग इनोड संख्या है, और इस प्रकार वास्तव में एक अलग फ़ाइल है (पुरानी फ़ाइल के समान नाम के साथ)।

इसलिए, जब आप फ़ाइल को vim के साथ संपादित करते हैं तो यह पुरानी फ़ाइल को हटा देती है, और उसी नाम से एक नया बनाती है। आपके द्वारा देखी जा रही समस्या अपाचे के कारण अभी भी पुरानी (हटाई गई) फ़ाइल पर लिखी जा रही है (आप इसे देख सकते हैं lsof)।

यदि आप वास्तव में एक लॉग फ़ाइल को छोटा करना चाहते हैं, तो विचार करें truncate -s 0 /path/to/file.log(जो कि अंदर जगह को छोटा करना लगता है)


2
echo> /path/to/file.log भी काम करता है

8

मैं Apache2 लॉग फ़ाइलों के रोटेशन को मजबूर करने की सलाह दूंगा :

$ sudo logrotate -f /etc/logrotate.d/apache2

यदि आप देखते हैं /etc/logrotate.d/apache2, तो आप देखेंगे कि Apache2इसके लॉग फ़ाइल को हटाने के बाद कॉन्फ़िगरेशन को फिर से लोड करना होगा:

$ sudo /etc/init.d/apache2 reload

उबंटू पर आप वैकल्पिक रूप से कर सकते हैं:

$ sudo service apache2 reload
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.