मैंने अपने अनुप्रयोग लॉग को घुमाए जाने के लिए "logrotate.d" निर्देशिका में दो स्क्रिप्ट जोड़े। यह उनमें से एक के लिए कॉन्फ़िगर है:
& lt; myLogFilePath & gt; {Cron.daily "निर्देशिका में एक" लॉग्रोटेट "स्क्रिप्ट है (जो क्रोन लॉग के अनुसार प्रतिदिन चलती है):
/ P>
#! / Bin / sh गूंज "logrotate_test" & gt; & gt; / tmp / logrotate_test # / usr / sbin / logrotate /etc/logrotate.conf & gt; / dev / null 2 & gt; और amp; 1 / usr / sbin / logrotate -v /etc/logrotate.conf & amp; & gt; & gt; / root / logrotate_error EXITVALUE = $? अगर [$ EXITVALUE! = 0]; तो / usr / bin / logger -t logrotate "ALERT असामान्य रूप से [$ EXITVALUE] से बाहर निकल गया" FI exit 0 पहला इको स्टेटमेंट काम कर रहा है। लेकिन मुझे लगता है मेरा आवेदन लॉग घुमाव नहीं हो रहा है, जबकि अन्य लॉग जैसे httpd को घुमाया जा रहा है ** ** ** और मुझे "लॉग्रोटेट_अपर" फ़ाइल में कोई भी आउटपुट दिखाई नहीं देता (सभी के लिए लिखने की अनुमति है प्रयोक्ता)। हालांकि syslog कहता है: "लॉगोटेट: ALERT असामान्य रूप से [1] से बाहर निकल गया" लेकिन जब मैं "logrotate" "Cron.daily" स्क्रिप्ट मैन्युअल रूप से, सब कुछ ठीक काम कर रहा है।
दैनिक cron कार्यक्रम के दौरान क्यों नहीं घूम रहा है? क्या मुझसे यहां कुछ गलत हो रहा है? यह बहुत अच्छा होगा यदि मुझे यह बहुत जरूरी मदद मिलती है।
नवीनीकृत: ऐसा लगता है, यह selinux की वजह से है - मेरी यूज़र होम डाइरेक्टरी में लॉग फाइलें प्रतिबंध हैं Selinux द्वारा लगाया जाता है और जब लॉग्रोटेट स्क्रिप्ट चलती है: SELinux फ़ाइल /home/user/logs/application.log पर getattr पहुँच से / usr / sbin / logrotate को रोका जा रहा है SELinux लॉग फाइलों पर लॉग फ़ाइलों पर पहुँच को प्रतिबंधित कर रहा था जिसमें निर्देशिकाओं में जरूरी SELinux फ़ाइल संदर्भ नहीं होता है। प्रकार। "/ Var / log" निर्देशिका में "var_log_t" फ़ाइल संदर्भ है, और लॉग -ोटेट आवश्यक रूप से करने में सक्षम था। तो इसका समाधान मेरे आवेदन लॉग फाइलों पर सेट करना था और इसकी मूल निर्देशिका है: semanage fcontext -a -t var_log_t & lt; निर्देशिका / लॉगफ़ाइल & gt; Restorecon -v & lt; निर्देशिका / लॉगफ़ाइल & gt;
No comments:
Post a Comment