मैं अपने सिसलॉग को भरने से क्रोन को कैसे रोक सकता हूं?


32

मेरे पास एक स्क्रिप्ट है जिसे प्रत्येक मिनट निष्पादित करने की आवश्यकता है। समस्या यह है कि क्रोन /var/log/syslogहर बार इसे निष्पादित करने के लिए लॉगिंग कर रहा है । मैं कुछ इस तरह से बार-बार देख रहा हूं /var/log/syslog:

Jun 25 00:56:01 myhostname /USR/SBIN/CRON[1144]: (root) CMD (php /path/to/script.php > /dev/null)

मैं डेबियन का उपयोग कर रहा हूं।

मेरे प्रश्न हैं: क्या कोई तरीका है जिससे मैं बता सकता हूँ कि क्रोन हर बार साइसलॉग के लिए यह जानकारी नहीं लिख सकता है?


1
किसी भी विचार कैसे एक बिजीबॉक्स प्लेटफॉर्म पर ऐसा करने के लिए?
/Etc/syslog.conf

जवाबों:


25

आप अपनी /etc/syslog.confफाइल में निम्नलिखित जोड़ने के लिए क्रोन के आउटपुट को एक अलग लॉग सुविधा में भेज सकते हैं :

# Log cron stuff
cron.*                                                  /var/log/cron

यह सुनिश्चित करने के /var/log/cronलिए अपने को जोड़ने के लिए याद रखें /etc/logrotate.d/syslogकि यह घुमाया जाता है, जैसे

# /etc/logrotate.d/syslog
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron {
    sharedscripts
    postrotate
    /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}

इनपुट के लिए धन्यवाद। मैंने cron को जोड़ा। * / var / log / cron और पुनरारंभ cron लेकिन यह / var / log / cron खाली छोड़ते समय संदेशों को / var / log / syslog में डंप करता रहता है। सुनिश्चित नहीं है कि यह कुछ क्यों नहीं कर रहा है
user7321

1
अरे यार, मेरी तरफ से महाकाव्य की विफलता। मैं syslog.conf का संपादन कर रहा था और क्रोन को पुनः आरंभ कर रहा था !! कोई आश्चर्य नहीं कि यह काम नहीं करेगा .. मुझे syslog =) को पुनः आरंभ करना चाहिए था
user7321

1
Cron.log को सक्षम करने से cron संदेशों को syslog में लिखे जाने से नहीं रोका जा सकता है।
बेसिक 6

16

ठीक है,

मेरे प्रश्न का हल था:

परिवर्तन

*.*;auth,authpriv.none     -/var/log/syslog

सेवा मेरे

*.*;cron,auth,authpriv.none     -/var/log/syslog

भीतर /etc/syslog.confऔर फिर syslog को पुनरारंभ करें

मेरे पास /var/log/cron.logडेव चेनी द्वारा सुझाए गए अनुसार क्रोन भी है और उस पर एक लॉगट्रोट चिपका हुआ है। डेविस सुझाव के साथ मेरा फिक्स मेरी स्थिति के लिए इष्टतम है क्योंकि:

  1. यह /var/log/syslogक्रोन संदेशों से बँधा रहता है
  2. मुझे अभी भी क्रोन संदेश मिलते हैं (जो समस्या निवारण के लिए अच्छा है)
  3. लॉगरोट /var/log/cron.logबहुत बड़े होने से रहता है।

7
आधुनिक प्रणालियों से संबंधित लोगों के लिए, rsyslogडेबियन 8.0 जेसी में एक है, इसलिए इसे /etc/rsyslog.confसंपादित किया जाना है। वैसे, जोड़े जाने वाले तार पहले से ही डिफ़ॉल्ट रूप से हैं, आपको इसे (लाइन 63) को अनसुना करने की आवश्यकता है। और /var/log/cron.logपहले से ही में है /etc/logrotate.d/syslog, जैसे पैकेज मेंटेनर्स ने इस धागे को पढ़ा है।
ट्रांसलूसेंटक्लाउड

आपका प्रश्न था Is there any way I can tell cron not write this information to syslog every time। इसका जवाब नहीं है।
एनडीटी

@TranslucentCloud बस यह जोड़ना चाहती थी कि ubuntu 14 LTS पर मेरा rsyslog कॉन्फ़िगरेशन /etc/rsyslog.d/50-default.conf में था।
जॉनी

8

बदलें / आदि / डिफ़ॉल्ट / क्रोन

  # Or, to log standard messages, plus jobs with exit status != 0:
  # EXTRA_OPTS='-L 5' 
  #
  # For quick reference, the currently available log levels are:
  #   0   no logging (errors are logged regardless)
  #   1   log start of jobs
  #   2   log end of jobs
  #   4   log jobs with exit status != 0
  #   8   log the process identifier of child process (in all logs)
  #
  EXTRA_OPTS="-L 0"

डिफ़ॉल्ट रूप से EXTRA_OPTS लाइन "" है


यह IMO सही समाधान है: लॉग रिकॉर्ड न बनाएं।
ntd

4

उबंटू में 14.04.5 (और कहीं और होने की संभावना) में syslogd के बजाय rsyslogd है। TranslucentCloud ने डेबियन जेसी के साथ यह संकेत दिया, लेकिन उबंटू में काम करने के लिए एक ही समाधान (लेकिन syslogd.conf के बजाय rsyslog.conf को बदलते हुए) दिखाई नहीं देता है।

ऐसा प्रतीत होता है कि मान /etc/rsyslog.d/50-default.conf में सेट किए गए मान वास्तव में /etc/rsyslog.conf में सेट किए गए सामान पर पूर्वता लेंगे, इसलिए बेहतर है कि वहां परिवर्तन करें और फिर rysyslog और cron को पुनरारंभ करें। अन्यथा आप अभी भी क्रोन लॉगिंग के डिफॉल्ट व्यवहार के साथ समाप्त हो जाएंगे, साथ ही क्रॉन लॉगिंग के लिए क्रोन लॉगिंग (लेकिन विशेष रूप से)।

मेरे /etc/rsyslog.d/50-default.conf में पहली जोड़ी लाइनें:

*.*;cron,auth,authpriv.none     -/var/log/syslog
cron.*                          /var/log/cron.log

और वोइला!


1
बहुत अच्छा जवाब। कहा कि, आप स्टैक ओवरफ्लो में भविष्य की भागीदारी के लिए नए सवालों पर ध्यान केंद्रित करना चाह सकते हैं क्योंकि यह बहुत पुराना है।
मैगेलन

3

मैंने इसे अलग तरीके से हल किया, लेकिन मेरा उद्देश्य थोड़ा अलग था। मैं क्रॉन लॉग एंट्रीज को छोड़ना चाहता था जो अटरुन निकालते समय उत्पन्न होते थे ताकि मेरी हार्ड ड्राइव सो जाए और हर 5 मिनट में जाग न जाए।

आपके पास syslog.conf में लॉग ईवेंट का लक्ष्य हो सकता है, इसे पाइप के साथ उपसर्ग करके एक शेल कमांड हो सकता है, और इसलिए मैं उन grep का उपयोग करता हूं जिन्हें मैं नहीं चाहता था। इसलिए:

cron.*              | grep -v "(/usr/libexec/atrun)" >> /var/log/cron.log

मैंने जांच नहीं की है, लेकिन मेरा मानना ​​है कि अगर वे अभी भी चाहते हैं तो उन लॉग प्रविष्टियों को दूसरे लक्ष्य पर भेजना संभव है।


3

दरअसल, 'बेस्ट' (कोई दावा कर सकता है) समाधान @DaveCheney ने जो सुझाव दिया है उसका एक संयोजन है और user7321 ने आखिरकार क्या किया , साथ ही एक तीसरी कार्रवाई जो मैं सुझाऊंगा :

  1. Cron से संबंधित लॉग संदेशों को / var / log / syslog में शामिल करने से syslogd को रोकना
  2. क्रोन लॉग संदेश सुनिश्चित करना कहीं न कहीं लॉग इन करता है (विशेषकर, / var / log / cron में) + क्रोन लॉग के लिए लॉग रोटेशन सुनिश्चित करता है।
  3. Cron से संबंधित लॉग संदेशों को / var / log / संदेश के रूप में अच्छी तरह से जोड़ने से syslogd को रोकना

आप में /etc/syslog.conf, इन सुझावों के संयोजन में कुछ बदलाव आते हैं:

*.*;cron,auth,authpriv.none                         -/var/log/syslog
auth,authpriv.none;daemon.none;mail,news.none       -/var/log/messages

में:

cron.*                                              /var/log/cron.log
*.*;cron,auth,authpriv.none                         -/var/log/syslog
auth,authpriv.none;cron,daemon.none;mail,news.none  -/var/log/messages

और क्रोन और syslogd दोनों सेवाओं को पुनः लोड (या पुनः आरंभ) करना न भूलें, उदाहरण के लिए:

/etc/init.d/syslogd force-reload
/etc/init.d/cron force-reload

नोट: यह rsyslogd के साथ भी काम करता है।


सबसे अच्छा समाधान यह है कि क्या @ पीडीएफ ने सुझाव दिया है, अर्थात पहली जगह में लॉग उत्पन्न न करें।
एनडीटी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.