सभी / var / लॉग हटाएं?


26

क्या में सब कुछ डिलीट कर सकता हूँ /var/log? या मैं केवल फ़ाइलों (पुनरावर्ती) को हटा दूं /var/logलेकिन फ़ोल्डर्स को छोड़ दूं?

क्या किसी के पास एक अच्छी rmकमांड लाइन है? (मेरे व्यवस्थापक कौशल मुझे परेशान करते हैं।)

नोट: मैं डेबियन का उपयोग कर रहा हूं। मुझे यकीन नहीं है कि क्या संस्करण है।


3
लॉग फ़ाइलों को हटाना एक बुरा विचार है (आपको प्रत्येक रनिंग प्रक्रिया को खोजने की आवश्यकता होगी जिसमें इसकी स्वयं की लॉग फ़ाइल है और इसे "किल-एचयूपी" है, यह एक नरम पुनरारंभ है जिसके परिणामस्वरूप प्रोग्राम किसी भी आवश्यक लॉग फ़ाइलों को फिर से बनाएगा)। मैं लॉग फ़ाइलों को हटाने के खिलाफ दृढ़ता से सलाह दूंगा, आप के लिए स्वचालित रूप से / var / log की सामग्री का प्रबंधन करने के लिए logrotate जैसी उपयोगिताओं पर भरोसा करते हैं (यह एचयूपी प्रक्रियाओं की तरह सामान करता है) अगर मैं एक अलग कोण से इससे निपटना चाहूंगा। आप किस समस्या को हल करने की कोशिश कर रहे हैं जिसके कारण आप इस पर विचार कर रहे हैं?
ट्विरिमिम सिप

जवाबों:


22

फ़ाइलों को हटाने के बजाय आपको उन्हें घुमा देना चाहिए, जैसे कि उपयोग करना logrotate

आपको कभी नहीं पता होगा कि आपको वास्तव में कुछ समय पहले से लॉग की आवश्यकता होगी, इसलिए उन्हें संग्रहित करना बेहतर है (एक उचित आयु तक, जैसे 3 महीने)।

logrotate अपनी पुरानी लॉग फ़ाइलों को संपीड़ित कर सकते हैं ताकि वे बहुत सारे डिस्क स्थान पर कब्जा न करें।


3
logrotate सबसे पुरानी फ़ाइलों को भी हटा सकता है।
केविन एम।

8
खैर, सभी लॉग्स को हटाने के लिए IMHO कुछ मामलों में सही समझ बना सकता है। उदाहरण के लिए मैं नई तैनाती के लिए उपयोग की जाने वाली एक पुण्य मशीन छवि बनाना चाहता हूं। कहने की जरूरत नहीं है कि मैं इसे बिना किसी लॉग, हिस्टरी, कैश आदि के वास्तव में साफ-सुथरी प्रणाली के रूप में सहेजना चाहूंगा।
इवान

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

4
@countermode आप कभी भी विषाद के मूड में नहीं हैं? जैसे 3 महीने पुराने लॉग फ़ाइलों को देखकर अच्छे ol 'बार के बारे में सोचना?
ब्रोको

ठीक है, मैं कमांड देखता हूं। इसका इस्तेमाल कैसे करें? मनुष्य लॉगोटेट कहता है कि इसे क्रोन में उपयोग करें। मैं -f विकल्प के साथ लगता है?
एसडीसोलर

17

यदि आप / var / log में सब कुछ हटाते हैं, तो आप बहुत कम समय में त्रुटि संदेशों के टन के साथ समाप्त हो जाएंगे, क्योंकि वहां फ़ोल्डर मौजूद हैं, जो मौजूद होने की उम्मीद है (जैसे exim4, apache2, apt, cup, mysql, samba) और अधिक)। प्लस: कुछ सेवाएं या एप्लिकेशन हैं जो उनकी लॉग फाइल नहीं बनाएंगे, अगर वे मौजूद नहीं हैं। उन्हें कम से कम एक खाली फाइल मौजूद होने की उम्मीद है। तो वास्तव में आपके सवाल का सीधा जवाब है "ऐसा मत करो !!!"

जैसा कि जोशी ने बताया है, ऐसा करने का कोई कारण नहीं है। मेरे पास डेबियन सर्वर चल रहे हैं जिनके पास वर्षों में एक भी लॉग फ़ाइल नहीं है।


मुझे पता ही नहीं चला। जानकार अच्छा लगा। +1 + ने मेरी स्वीकार्यता बदल दी।

1
मैंने बस यही किया है। तमन्ना! मैंने इस उत्तर को पहले पढ़ा था
वरुणअगव

लॉग फाइल, IMHO को हटाने के लिए वैध कारण हैं। उदाहरण के लिए, आप दूसरों द्वारा उपयोग के लिए एक वर्चुअल मशीन का निर्यात कर रहे हैं, लेकिन आप वर्चुअल मशीन की छवि को निर्यात से पहले हुई हर चीज का विवरण नहीं देना चाहते हैं।
a3nm

15

सभी फ़ाइलें हटाएं:

find /var/log -type f -delete

सभी .gz और घुमाए गए फ़ाइल को हटाएँ

find /var/log -type f -regex ".*\.gz$"
find /var/log -type f -regex ".*\.[0-9]$"

"-डेलीट" के बिना रन कमांड की कोशिश करें, इसे जांचने के लिए।


मुझे पैकेजिंग से पहले वैग्रेंट बॉक्स की लॉग फ़ाइलों को साफ़ करने के लिए यह उपयोगी लगा।
रुडोल्फ वावरुच

10

मैं मास्टर से वर्चुअल मशीन क्लोन कर रहा हूं। यह मास्टर पर लॉग को साफ़ करने के लिए एकदम सही समझ में आता है ताकि जब आप क्लोन बूट करें तो आपको मास्टर का लॉग नहीं मिलेगा। मैंने tsh में किया:

cd /var/log
foreach ii ( `find . -type f` )
foreach? cp /dev/null $ii
foreach? end

जो लॉग को साफ करता है लेकिन फाइलों को रखता है।


यह आपके द्वारा उपयोग किए जाने वाले केस-केस तक ही सीमित होना चाहिए।
स्वेन

4
Bash में: ढूँढें / var / log / -type f -exec cp / dev / null {} \;
गेरार्ड

7

फ़ाइलों को हटाए बिना लिनक्स सिस्टम पर सभी लॉग को साफ करना :

for CLEAN in $(find /var/log/ -type f)
do
    cp /dev/null  $CLEAN
done

सांबा ( /var/www/samba) आईपी पते के साथ लॉग फ़ाइल-नाम बनाता है, आप उन्हें हटाना चाहते हैं:

for CLEAN in $(find /var/log/samba -type f)
do
    rm -rf $CLEAN
done

2
उपयोगी स्क्रिप्ट।
अनमोल सिंह जग्गी

आप स्वैप सकता cp /dev/null $CLEANद्वारा > $CLEAN
थोरियम बीआर

2

आप पुरानी फ़ाइलों को खोजने के लिए विकल्प के समय का उपयोग कर सकते हैं ... उदाहरण के लिए:

find -ctime +30

जैसा कि bindbn समझाता है, पहले भ्रूण फ़ाइलों को खोजने का प्रयास करें और विकल्प हटाने के बाद उपयोग करें: D


2

/var/logअक्सर इसकी अनुमति होती है drwxrwxr-x, इसलिए जब तक उपयोगकर्ता जड़ या विशेषाधिकार प्राप्त समूह से संबंधित नहीं है, तब तक उपयोगकर्ता योग्य नहीं है। इसका मतलब है कि गैर-विशेषाधिकार प्राप्त उपयोगकर्ताओं द्वारा नई लॉग फाइलें नहीं बनाई जा सकती हैं।

उन अनुप्रयोगों के लिए जो किसी बिंदु पर लॉग इन करने की अपेक्षा करते हैं /var/log, अक्सर /var/logस्थापित समय के दौरान पदानुक्रम में कहीं अस्तित्व में एक फ़ाइल को स्पर्श करेंगे (जो कि अक्सर विशेषाधिकारों के साथ होता है), chmodऔर संभवतः chownउस समय अप्रकाशित उपयोगकर्ताओं के लिए उपयुक्त अनुमतियों के लिए यह उस समय होगा जो होगा आवेदन का उपयोग कर।

उदाहरण के लिए, अपाचे लॉग आमतौर पर लिखे जाते हैं nobody, जो अपाचे जोखिम वाले सिस्टम में डाल दिए बिना अपना काम पाने के लिए संभव के रूप में कुछ विशेषाधिकारों के साथ एक उपयोगकर्ता है। लेकिन यहां तक ​​कि अधिक रन-ऑफ-द-मिल एप्लिकेशन अक्सर लॉगफ़ाइल में लिखने में सक्षम होने की उम्मीद करता है /var/log

तो क्या होता है अगर लॉगफाइल, और लॉगफाइल का रास्ता मौजूद नहीं है? यह पूरी तरह से आवेदन पर निर्भर है। कुछ एप्लिकेशन चुपचाप लॉगिंग छोड़ देंगे। दूसरे बहुत सारी चेतावनियाँ पैदा करेंगे। और दूसरों को बस जमानत मिल जाएगी। कोई कठिन-तेज़ नियम नहीं है; यह एप्लिकेशन डेवलपर की सतर्कता पर निर्भर है, साथ ही डेवलपर अपनी लॉग इन करने की क्षमता को कितना महत्वपूर्ण मानता है। सबसे अच्छे रूप में एप्लिकेशन या तो लिखने या संभवतः बनाने का प्रयास करेगा और फिर एक गंतव्य फ़ाइल में एक लॉग फ़ाइल में लिख सकता है /var/log, और खुद को ऐसा करने में असमर्थ पाएगा क्योंकि यह एक ऐसे उपयोगकर्ता द्वारा चलाया जा रहा है जिसके पास लिखने के लिए विशेषाधिकार नहीं हैं। फाइलसिस्टम का वह हिस्सा।

तो संक्षिप्त उत्तर नहीं है, सब कुछ नहीं हटाएं /var/log- यह अनुबंध के उपयोगकर्ताओं को पर्याप्त विशेषाधिकार के साथ तोड़ता है ऐसा करने के लिए उनके सिस्टम पर चलने वाले अनुप्रयोगों के साथ ऐसा होता है, और कुछ शोर का कारण होगा, लॉग करने के लिए कुछ मौन विफलता, और कुछ ऑल-आउट टूटना।

लेने के लिए उचित कार्रवाई logrotateउचित विन्यास फाइल के साथ स्थापित करना है । आमतौर पर रोटेशन क्रोन जॉब से जुड़ा होगा। रोटेशन अंतराल आधारित, या आकार आधारित, या दोनों हो सकता है। यदि अंतराल समाप्त हो जाता है तो लॉगफ़ाइल अभी भी खाली होने पर अंतराल आधारित रोटेशन से बचने वाले नियमों को स्थापित करना संभव है। रोटेशन में लॉगफ़ाइल्स, संपीड़न, विलोपन, कतरन और इतने पर मेलिंग शामिल हो सकते हैं।

औसत उपयोगकर्ता को लॉग रोटेशन के बारे में बहुत चिंतित होने की आवश्यकता नहीं होगी। डेवलपर्स शायद यह सुनिश्चित करना चाहते हैं कि वे लॉग का उपयोग करें, जिसमें रोटेशन नियम स्थापित हों। वास्तव में, यह किसी भी सॉफ़्टवेयर-विशिष्ट लॉग के लिए स्थापित समय पर लॉग रोटेशन को स्थापित करने के लिए डेवलपर्स की ओर से अच्छा शिष्टाचार है जो सॉफ्टवेयर बना रहा है और लिख रहा होगा।


1

मैंने यहां एक साधारण क्लीनर लागू किया है:

https://github.com/Lin-Buo-Ren/Coward-Unix-Log-Cleaner

यह बस:

  • नीचे दिए गए लॉगऑन किए गए फ़ाइल नाम पैटर्न के साथ फ़ाइल नाम हटाता है /var/log
    • ^.*/.+\.[[:digit:]]+(\.[[:alpha:]]+)?$
    • ^.*/.+\.old$ (असंवेदनशील मामला)
  • निम्न लॉग फ़ाइल नाम पैटर्न के साथ फ़ाइल नाम के साथ ट्रंकट / खाली फाइलें /var/log
    • ^.*/.+\.log$ (असंवेदनशील मामला)

-2
function goodbyelogs {
find /var/log -type f
}

for i in return $(goodbyelogs);
do sudo cat /dev/null > $i;
echo "Log $i has been cleared";
done

एक निष्पादन योग्य स्क्रिप्ट बनाएं और यदि रूट सूद आपके लिए काम नहीं कर रहा है तो रूट के रूप में चलाने का प्रयास करें

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