MacOSX शेर में क्रोन लॉग फ़ाइल कहाँ है?


25

मैं एक क्रॉन जॉब का निवारण करना चाहता हूं जिसने हाल ही में संशोधन तक ठीक काम किया है, लेकिन मुझे क्रोन लॉग फ़ाइल नहीं मिल रही है, यह कहां है?


2
क्या यह वास्तव में एक क्रॉन जॉब है या आप लॉन्चड का उपयोग कर रहे हैं। क्रॉन OS X पर पदावनत किया गया है
jaberg

1
क्या आपने क्रोन जॉब के लिए एक लॉग फाइल सेट की थी?
daviesgeek

यह वास्तव में एक cronनौकरी है जिसे मैंने इसे स्थापित किया है cron -eऔर मैं इसे देख सकता हूं cron -lऔर मुझे यकीन है कि इसने शेर पर और इससे पहले स्नो लेपर्ड पर लंबे समय तक काम किया था।
अली

और नहीं, मैंने स्वयं 'क्रोन' के लिए एक लॉग फ़ाइल को मैन्युअल रूप से सेट नहीं किया है, हालांकि मैं नौकरी के अंदर एक लॉग फ़ाइल को लिखता हूं और मैंने कुछ बदलने के बाद हाल ही में काम करना बंद कर दिया है।
अली

2
अली, चूंकि आपका जवाब है, कृपया इसे उत्तर के रूप में पोस्ट करें और इसे स्वीकार करें। इसे प्रश्न में संपादित न करें। आपको अपने प्रश्न का उत्तर देने के लिए न केवल अनुमति दी जाती है, बल्कि प्रोत्साहित भी किया जाता है।
जेसन सलाज

जवाबों:


30

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

क्रोनजोब निष्पादन आउटपुट की जांच करने के लिए, मैं सुझाव देता हूं कि लॉगऑफाइल्स के लिए STDOUT और STDERR को रीडायरेक्ट करने के लिए आपकी क्रोनजॉब लाइन को संशोधित किया जाए। अपनी crontab फ़ाइल में या दौड़ने के बाद crontab -e, हालाँकि आप इसके बारे में जाते हैं, अपनी नौकरी लाइन के लिए कुछ इस तरह जोड़ें:

0 0 * * * yourcommand >/tmp/stdout.log 2>/tmp/stderr.log

ऐसा करने से STDOUT (सामान्य रूप से मुद्रित या echo'ed आउटपुट को STDOUT) को एक पाठ फ़ाइल में भेजा जाना चाहिए जिसका नाम stdout.log / tmp निर्देशिका में है, और STDERR से stderr.log में अस्थायी निर्देशिका। कई उपयोगिताएँ STDERR का उपयोग विशेष त्रुटि संदेशों को प्रिंट करने के लिए करती हैं, जब वे एप्लिकेशन त्रुटियां होती हैं, और प्रोग्राम के वास्तविक निष्पादन द्वारा उत्पन्न त्रुटियाँ नहीं। (आप विकिपीडिया पर STDERR के बारे में अधिक पढ़ सकते हैं ।)


धन्यवाद, यह वही है जो मैं करने की कोशिश कर रहा हूं, ऐसा लगता है कि cronकिसी कारण से पहली जगह में काम चलाने में विफल रहता है। अगर मैं टर्मिनल में कमांड टाइप करके इसे चलाता हूं और लॉगफाइल को आउटपुट करता हूं, लेकिन अगर मैं cronइसे चलाने के लिए इंतजार करता हूं तो कुछ नहीं होता है, कम से कम लॉग फाइल में कोई बदलाव नहीं, मैं सोच रहा था कि शायद "क्रोन लॉग फाइल" "या सांत्वना में कोई निशान था, जो मुझे यह पता लगाने में मदद कर सकता है कि क्या चल रहा है, हाल ही में मैंने अपना शेल बैश से बदलकर zsh किया है लेकिन मुझे नहीं लगता कि इससे कोई प्रभावित हो सकता है।
अली

1
Erikslab.com/2011/02/04/logging-with-launchd के अनुसार , आप क्रोन /System/Library/LaunchDaemons/com.vix.cron.plistप्लिस्ट ( ) को Stdout / Stderr पथ से क्रॉन को डीबग करने के लिए संशोधित कर सकते हैं । मुझे याद नहीं है कि अगर launchctl unloadप्लांट में आईएनजी और launchctl loadआईएनजी पर्याप्त है, या चूंकि यह एक सिस्टम डेमॉन है, अगर आपको पूरी तरह से पुनरारंभ करना होगा। मैं बाद का सुझाव दूंगा कि यह सुनिश्चित हो।
जेसन सलाज

21

बहुत आसान बस निम्नलिखित जोड़ने के लिए /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 पर काम कर रहा है


3
मुझे यह विचार पसंद है - लेकिन 10.10.5 में, मेरा /etc/syslog.confकहना है # Note that flat file logs are now configured in /etc/asl.conf। उस फ़ाइल का एक अलग सिंटैक्स है, यह मुझे स्पष्ट नहीं है कि उसमें लॉगिंग कैसे कॉन्फ़िगर करें।
केन विलियम्स

@ केनविलियन्स भले ही यह कहते हैं कि, syslog.conf अभी भी हाई सिएरा पर काम करता है।
फिश मॉनीटर

15

डिफ़ॉल्ट रूप से, "लॉगिंग" सक्षम नहीं है। लेकिन mailकमांड चलाने से आपको कुछ उपयोगी जानकारी मिल सकती है ।

टीएल; डीआर ऑन द mailकमांड: संदेश पढ़ने के लिए एंटर दबाएं, और फिर qछोड़ने के लिए एंटर करें।


4
बहुत अच्छा धन्यवाद। खदान ने मुझे दिखाया कि मेरी क्रोन के साथ एक अपरिचित कमान थी। चीयर्स!
जोशुआ पिंटर

7

मैं क्रोन-जॉब लॉग इन करने में सक्षम था,

/var/mail/{user-name}

निम्नलिखित एक क्रोन जॉब लॉग है जो मुझे AWS CLI कमांड चलाने के लिए मिला है,

From build@BuildServer1.local  Fri Mar  2 10:00:00 2018
Return-Path: <build@BuildServer1.local>
X-Original-To: build
Delivered-To: build@BuildServer1.local
Received: by BuildServer1.local (Postfix, from userid 501)
    id A7A94296CBA3; Fri,  2 Mar 2018 10:00:00 +0100 (CET)
From: build@BuildServer1.local (Cron Daemon)
To: build@BuildServer1.local
Subject: Cron <build@BuildServer1> /app/scripts/s3-sync.sh
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=build>
X-Cron-Env: <USER=build>
X-Cron-Env: <HOME=/Users/build>
Message-Id: <20180302090000.A7A94296CBA3@BuildServer1.local>
Date: Fri,  2 Mar 2018 10:00:00 +0100 (CET)

upload: ../../app/logs/debug.log to s3://**my-s3***/app/logs/debug.log

1
यही कारण है कि किसी त्रुटि के मेलबॉक्स में संग्रहीत मेल हैuser
nohillside

@patrix, मैं सफलता क्रोन नौकरी भी पा रहा था। उत्तर अपडेट किया गया।
विनीथ

अच्छा! स्वीकृत उत्तर होना चाहिए!
ट्रोलहॉर्न

3

जब क्रॉन जॉब चला रहा हो तब (जैसा कि मेरे पास) है, अंदर /usr/local/binनहीं है PATH
मैंने इसे परीक्षण और त्रुटि से पाया और एक साधारण चीजों से खरोंच से काम का निर्माण किया जो मुझे पता था कि काम करेगा और धीरे-धीरे चीजों को जोड़ा जब तक मुझे समस्या नहीं मिली।

अन्य सुझावों और उत्तरों के बारे में:
किसी कारण से (कम से कम मेरी मशीन पर, जो स्नो लेपर्ड से अपग्रेड एक शेर चला रहा है) cronप्लिस्ट फाइलों में निर्दिष्ट मापदंडों का उपयोग नहीं करता है जो launchdपढ़ने के लिए बंद किया गया है /System/Library/LaunchDaemons/com.vix.cron.plistया शायद शेर पर क्रोन कुछ भी नहीं लिखता है to stdout या stderr।

वैसे मैं उपयोग कर रहा हूँ http://s3tools.org/s3cmd लिए syncएक बैकअप (एक आदिम ड्रॉपबॉक्स की तरह) के रूप में एक अमेज़न S3 बाल्टी के साथ एक फ़ोल्डर।

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