OS X पर क्रोन क्रियाओं का लॉग


46

क्या ओएस एक्स के साथ आने वाला क्रोन कहीं भी अपनी कार्रवाई करता है?

मैं किसी विशेष क्रोन जॉब के आउटपुट की तलाश नहीं कर रहा हूं, बल्कि लॉग इन कर रहा हूं कि क्रोन क्या कर रहा है। एक जोड़ी लिनक्स मशीनों पर मैंने जाँच की है, /var/log/cronजिसमें सामग्री है जैसे:

Apr 26 11:00:01 localhost crond[27755]: (root) CMD (/root/bin/mysql-backup)
Apr 26 11:01:01 localhost crond[27892]: (root) CMD (run-parts /etc/cron.hourly)
Apr 26 11:07:01 localhost crond[28138]: (root) CMD (/usr/local/bin/python /home/
user1/scripts/pythonscript.py)
Apr 26 11:18:18 localhost crontab[28921]: (user2) LIST (user2)
Apr 26 11:18:22 localhost crontab[28929]: (user2) BEGIN EDIT (user2)
Apr 26 11:18:59 localhost crontab[28929]: (user2) REPLACE (user2)

यह दिखाता है कि नौकरियां कब चली गईं, जब उपयोगकर्ता crontabs को देखते या संपादित करते हैं, यह सामान कहीं नहीं है जो मैंने अपने स्नो लेपर्ड मशीन पर पाया है।

जवाबों:


49

बहुत आसान बस /etc/syslog.conf करने के लिए निम्नलिखित जोड़ने के लिए:

cron.*      /var/log/cron.log

फिर syslog को पुनरारंभ करें

sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist
sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist

परीक्षण किया और OSX 10.7.4 पर काम कर रहा है


वाह, ज्यादा सरल। एक उत्थान है। मुझे आश्चर्य है कि अगर यह हिम तेंदुए पर काम किया होता।
डग हैरिस

2
Mavericks पर काम करता है
Clustermagnet

1
Yosemite पर काम करता है
निकल

हिम तेंदुए पर काम करता है, 10.6.8 (हाँ, मैं एक प्राचीन हूँ ...)
डैनियल ग्रिस्कॉम

2
/System/Library/LaunchDaemons/com.apple.syslogd.plist: सिस्टम इंटीग्रिटी प्रोटेक्शन लगी हुई है, जबकि ऑपरेशन की अनुमति नहीं है (10.13.2 उच्च सिएरा)। क्या मुझे SIP को निष्क्रिय करना होगा? धन्यवाद!
शेन लू

12

मैंने यह पता लगाया कि हर एक को लॉन्च करने वाली नौकरियों पर स्विच किए बिना मेरी क्रोन जॉब गतिविधि को कैसे लॉग किया जाए।

क्रॉन आदमी पेज का उल्लेख -xविकल्प जो सक्षम बनाता है "मानक आउटपुट में डिबगिंग जानकारी के लेखन।" इसका एक दुष्प्रभाव यह है कि ये मानक त्रुटि के लिए बुनियादी जानकारी भी लिखते हैं। मानक त्रुटि पर भेजे गए डेटा को लिखा जाता है /var/log/system.log

डेटा में यह इस तरह लिखा जा रहा है /var/log/system.log:

debug flags enabled: misc
[42073] cron started
log_it: (user1 42084) CMD (/root/bin/mysql-backup)
log_it: (user1 42094) CMD (run-parts /etc/cron.hourly)

चूँकि क्रोन स्वयं लॉन्च द्वारा लॉन्च किया गया है, इसे सक्षम करने के लिए, मुझे /System/Library/LaunchDaemons/com.vix.cron.plistइसे संपादित करना पड़ा ताकि यह अब जैसा दिखता है:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
    "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.vix.cron</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/sbin/cron</string>
        <string>-x</string>
        <string>misc</string>
    </array>
    <key>KeepAlive</key>
    <dict>
        <key>PathState</key>
        <dict>
            <key>/etc/crontab</key>
            <true/>
        </dict>
    </dict>
    <key>QueueDirectories</key>
    <array>
        <string>/usr/lib/cron/tabs</string>
    </array>
    <key>EnableTransactions</key>
    <true/>
    <key>StandardErrorPath</key>
    <string>/var/log/cron.log</string>
</dict>
</plist>

मैंने -x miscयहाँ उपयोग किया है, लेकिन मुझे इस बात से कोई फ़र्क नहीं पड़ा कि मैंने किन विकल्पों का उपयोग किया। जोड़ना -xकाम गतिविधि के प्रवेश शुरू कर दिया। मैंने /var/log/cron.logडिफ़ॉल्ट के बजाय लिखने के लिए StandardErrorPath को भी जोड़ा /var/log/system.log

और फिर इसे उतारें और पुनः लोड करें:

$ sudo launchctl
Password:
launchd% unload /System/Library/LaunchDaemons/com.vix.cron.plist 
launchd% load /System/Library/LaunchDaemons/com.vix.cron.plist 

1

OSX अब क्रोन के बजाय लॉन्च का उपयोग करने की प्रवृत्ति रखता है - Apple देव डॉक - इसलिए यह हो सकता है कि लॉग करने के लिए क्रोन में कुछ भी नहीं है।

लॉन्चिंग के लॉगिंग स्तर को नियंत्रित करने के लिए लॉन्चर का उपयोग करें। सोम लॉग जानकारी system.log में दिखाई देती है, लेकिन कंसोल ऐप में अधिक -> सभी संदेश


5
हम्म, लॉन्च करने के लिए स्विचिंग एक ऐसी चीज है जिस पर मैं विचार कर सकता हूं, लेकिन मैं एक पुराना पुराना यूनिक्स उपयोगकर्ता हूं। मैंने उस लिंक का अनुसरण किया। उस पेज पर उदाहरण 1046 बाइट्स है जो क्रॉस्टैब के 24 अक्षरों को बदलने के लिए लंबा है 0 0 7 11 0 happybirthday
डग हैरिस

-1

कम से कम योसेमाइट पर, क्रोन mailसंदेशों के रूप में आउटपुट लॉग करता है , इसलिए mailउन्हें पढ़ने के लिए उपयोग करें।


cronमेल के माध्यम से नौकरी के स्वामी को आउटपुट (अन्यथा संयुक्त राष्ट्र पुनर्निर्देशित) भेजता है। यदि सभी आउटपुट को पुनर्निर्देशित किया जाता है, तो कोई मेल नहीं भेजा जाता है। (यदि कोई संदेश भेजा जाता है, तो भी मुझे यकीन नहीं है कि क्या यह उस कमांड को दिखाता है जिसे निष्पादित किया गया था।) यह सवाल पूछ रहा है कि व्यवस्थापक सभी कमांड को कैसे देख सकता है जो cronप्रदर्शन किया है। अपने उत्तर का उपयोग करने के लिए, किसी व्यक्ति को हर किसी की मेल फ़ाइल को देखना होगा।
जी-मैन का कहना है कि 'मोनिका'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.