क्रॉन स्क्रिप्ट Mavericks पर निष्पादित नहीं कर रहा है


12

मैंने एक यूजर कॉन्ट्राब फाइल को निम्न प्रकार से कॉन्फ़िगर किया है:

*/2 * * * * /Users/[my user]/Dropbox/htdocs/auto-update.sh

लेकिन यह निष्पादित नहीं होगा। मैंने 10-15 मिनट इंतजार किया। क्यों?

यदि मैन्युअल रूप से निष्पादित किया जाता है, तो आदेश Auto-update.sh आसानी से चलता है। मैं निष्पादन की श्रृंखला को कैसे तोड़ सकता हूं और क्रोन से चलने वाली अपनी स्क्रिप्ट प्राप्त कर सकता हूं?


1
आप कौन सा ओएस चला रहे हैं? क्रोन ओएस एक्स पर पदावनत है इसलिए आपको डेमॉन शुरू करने की आवश्यकता हो सकती है?
bmike

नवीनतम, 10.9.2। मैं यह कैसे करुं? मैं उदाहरण के लिए हर घंटे काम करने के लिए एक स्क्रिप्ट चाहता हूं। उपरोक्त स्क्रिप्ट में मैं हताश था क्योंकि यह काम नहीं किया था, और इसे हर 2 मिनट में काम करने के लिए संशोधित किया।
रोमावैलर

1
यदि क्रॉस्टैब फ़ाइल मौजूद है, तो क्रोन डेमॉन को स्वचालित रूप से शुरू किया जाना चाहिए (इसके प्रतिस्थापन, लॉन्च द्वारा)। देखें /System/Library/LaunchDaemons/com.vix.cron.plist (विशेष रूप से KeepAliveऔर QueueDirectoriesआइटम)।
गॉर्डन डेविसन

ठीक है, Keeplive वहाँ है, लेकिन केवल सूचीबद्ध पथ '/ etc / crontab' है जो मौजूद नहीं है। QueueDirectories में प्रतिबंधित फ़ोल्डर '/ usr / lib / cron / tabs' में मौजूदा फ़ाइल है। सु और विम के साथ इसे खोलने पर, मेरा काम है।
रोमावलर

जवाबों:


17

एक क्रॉन जॉब जिस वातावरण में चलता है वह इंटरेक्टिव शेल से काफी अलग है; यह संभावना है कि स्क्रिप्ट चल रही है, लेकिन सफलतापूर्वक नहीं। सबसे बड़े अंतरों में से एक क्रोन नौकरियों के लिए, डिफ़ॉल्ट पैठ सिर्फ "/ usr / bin: / bin" है, इसलिए यदि आप ऐसे किसी भी कमांड का उपयोग करते हैं जो / usr / bin या / bin में नहीं हैं, तो वे नहीं होंगे जब तक आपकी स्क्रिप्ट या तो अपना पैथ सेट नहीं करती है, या कमांड के लिए स्पष्ट रास्ते की आपूर्ति करती है। अन्य बड़ा अंतर बस इतना है कि यह एक इंटरैक्टिव सत्र से जुड़ा नहीं है, इसलिए यदि यह कुछ भी इंटरैक्टिव करने की कोशिश करता है (टर्मिनल से पढ़ें, आदि) जो विफल हो जाएगा। क्रोन प्रविष्टि को इसमें बदलने का प्रयास करें:

*/2 * * * * /Users/[my user]/Dropbox/htdocs/auto-update.sh >>/tmp/auto-update.log 2>&1

... और देखें कि लॉग में कुछ जानकारीपूर्ण दिखाई देता है या नहीं।


यह मेरे प्रयास से बेहतर है - अपने लकड़हारे विचार को शामिल करने के लिए स्वतंत्र महसूस करें यदि यह आपके उत्तर को किसी भी बेहतर बनाता है।
bmike

लॉग बस दिखाई नहीं दिया।
रोमावलसर

@RomaValcer: यह अजीब है - इसका मतलब है कि यह स्क्रिप्ट को लॉन्च करने के लिए भी नहीं मिल रहा है। मैं दौड़कर ps -ax | grep [c]ronदेखूंगा कि क्या यह क्रोन डेमॉन (/ usr / sbin / cron) चल रहा है। यदि यह है, तो bmike के लकड़हारा परीक्षण का प्रयास करें। किसी भी स्थिति में, लॉग (/var/log/system.log और कंसोल में "सभी संदेश" आइटम की जांच करें) और देखें कि क्या कुछ प्रासंगिक-दिख रहा है।
गॉर्डन डेविसन

हाँ, यह वहाँ है। लेकिन लॉग कुछ भी नहीं दिखाता है जो निर्धारित समय पर शुरू होता है।
रोमावलसर

4

यह बताना कठिन है, लेकिन क्या होगा यदि आपने हर 5 मिनट में ऐसा करने के लिए दूसरी क्रोन जॉब जोड़ी है और क्या उसने कुछ सिस्टम बिल्ट टूल को कॉल किया है जो मेसेजेस को सिस्टम लॉग करता है?

0,5,10,15,20 * * * * /usr/bin/logger "cron is working"

इस तरह से आपको पता चल जाएगा कि क्रोन प्रश्न में उपयोगकर्ता के लिए चल रहा है और क्रोन को शुरू करने या अपनी स्क्रिप्ट को ठीक करने पर ध्यान केंद्रित कर सकता है, इसलिए यह सीमित क्रोन वातावरण में चलता है। (आप दीवार घड़ी को देख सकते हैं और कुछ बार उठा सकते हैं जो जल्द ही या अगले कुछ मिनटों में आ सकते हैं - जैसे कि मिनटों को चलाने और बचाने के लिए मिनट में 12:34 पर 35,36,37,38 में संपादन। ।)


4

आपको यह प्रश्न पूछे हुए कुछ समय हो गया है, लेकिन ऐसा लगता है कि इस सूत्र में कोई हल नहीं निकला।

आपके द्वारा उपयोगकर्ता-कॉन्टैब बनाने के तरीके के आधार पर, इसे संपादित करने के बाद इसे निष्पादित करना आवश्यक हो सकता है:

crontab ~/.yourcrontabfile

यह देखने के लिए कि क्या नया कोंट्राब (इसे संशोधित करने के बाद भी) सक्रिय हो गया है, इसके साथ जांचें:

crontab -l

यह काम नहीं करता है। Crontab -l से पता चलता है कि क्रोन की स्थापना की गई है, लेकिन यह अभी भी काम नहीं करता है।
PKHunter

1

मुझे भी यही समस्या थी। आपको अपनी बैश स्क्रिप्ट में रास्ता जोड़ना होगा:

#!/bin/sh
PATH=/usr/local/bin:/usr/local/sbin:~/bin:/usr/bin:/bin:/usr/sbin:/sbin

0

मुझे भी यही समस्या थी। जब मैं अपनी crontab फ़ाइल में काम करने के बाद एक नई पंक्ति जोड़ रहा था, तो वह चला गया (मैं कुल crontab n00b हूं, इसलिए मुझे नहीं पता कि यह व्यवहार व्यापक रूप से ज्ञात है या नहीं)।

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