मुझे कैसे पता चलेगा कि क्रोन मेरी नौकरियां क्यों नहीं चला रहा है?


15

मैं Ubuntu 14.04 का उपयोग कर रहा हूं, और क्रोन डेमॉन चल रहा है:

# ps ax | grep cron
822 ?        Ss     0:00 cron

लेकिन यह किसी काम को अंजाम नहीं दे रहा है। मैं पहले /var/log/syslogइस तरह से प्रविष्टियाँ प्राप्त कर रहा था :

2014-05-04T11:47:01.839754+01:00 localhost CRON[29253]: (root) CMD (test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly ))

लेकिन अब क्रोन-संबंधित प्रविष्टियाँ नहीं हैं। मुझे भी इस तरह की प्रविष्टियाँ मिल रही थीं /var/log/auth.log:

2014-05-04T11:47:01.839183+01:00 localhost CRON[29252]: pam_unix(cron:session): session opened for user root by (uid=0)
2014-05-04T11:47:13.495691+01:00 localhost CRON[29252]: pam_unix(cron:session): session closed for user root

लेकिन फिर, अब क्रोन-संबंधित प्रविष्टियाँ नहीं हैं।

मुझे इस बात की जानकारी नहीं है कि कुछ भी बदल गया है। मैंने क्रोन को फिर से शुरू करने की कोशिश की है:

# service cron restart
cron stop/waiting
cron start/running, process 24907

मैंने crontab -eएक क्रॉन जॉब जोड़ने के लिए उपयोग करने की कोशिश की * * * * * date >> /tmp/somefileजो काम करता है, लेकिन इसने एक नया कॉन्ट्राब स्थापित किया है /var/spool/cron/crontabs/root, जबकि मैं चाहता हूं कि क्रोन फ़ाइल में उपयोग करें /etc/crontab

क्या कोई डिबग विकल्प है जिसका मैं उपयोग कर सकता हूं या कहीं लॉग कर सकता हूं जो त्रुटि संदेश दे सकता है जिसे मैं जांच कर सकता हूं?


1
Crontab -l को क्या प्रदर्शित किया गया?
user345352353

no crontab for root
jl6

मेरा मानना ​​है कि यदि आप इस एसई साइट पर खोज करने का थोड़ा सा ही करते हैं तो आपके पास एक उत्तर होगा। यह एक काफी सामान्य समस्या है।
mdpc

crontabकमांड ( -lस्विच) का उपयोग करके पुनर्प्राप्त किए गए क्रोन उपयोगकर्ता-निर्भर हैं, जबकि /etc/crontabसिस्टम-वाइड क्रोन को स्टोर करने के लिए उपयोग किया जाता है। इस कारण से, सहेजे गए कार्य /etc/crontabकिसी में दिखाई नहीं देंगे crontab -l
जॉन डब्ल्यूएच स्मिथ

जवाबों:


4

आगे आपकी मदद करने के लिए कि आपकी cronनौकरियों में क्या गलत है , आपको अपने मेल की जांच करनी चाहिए। यह आमतौर पर फ़ाइल में संग्रहीत किया जाता है जैसे /var/mail/<user_name>या /var/spool/mail/<user_name>

ये दो फाइलें वास्तव में मेरे डेबियन बॉक्स पर हार्डलिंक हैं, लेकिन मुझे नहीं पता कि यह मानक है या नहीं।

व्याख्या

से cron(8)पेज:

आदेशों को निष्पादित करते समय, किसी भी आउटपुट को क्रॉस्टैब के मालिक को मेल किया जाता है (या अगर ऐसा मौजूद है, तो क्रॉस्टैब में मेल्टो पर्यावरण चर में नामित उपयोगकर्ता के लिए)।


मैंने मेल चेक किया है; कोई भी उत्पन्न नहीं हो रहा है, न ही कोई डेड.लेटर फ़ाइल है।
jl6

0

आपने दिखाया है कि रूट के लिए कोई कॉन्टैब नहीं है, क्या किसी भी उपयोगकर्ता के पास कॉन्टैब एंट्री है? यदि आप केवल रूट का उपयोग कर रहे हैं, तो आप निम्न निर्देशिकाओं की भी जांच कर सकते हैं: /etc/cron.daily/ - /etc/cron.hourly/ - /etc/cron.monthly/ - /etc/cron.webly

मेरी मशीन पर (सेंटो 6.4) मेरे पास /etc/cron.daily/ निर्देशिका के अंदर mlocate.cron है और क्रोन रोजाना उस स्क्रिप्ट को चलाता है।

इसलिए मुझे लगता है कि आपको सिर्फ क्रोन जॉब्स जोड़ने की जरूरत है।


लेकिन इसमें crontab फ़ाइल है /etc/crontab। शायद सवाल यह है कि crontab -lइसे स्वीकार क्यों नहीं करता ?
jl6

0

मैंने /etc/crontabनिम्नलिखित पर अनुमतियों को बदलकर इसे हल किया :

-rw-r--r-- 1 root root 778 May 10 21:31 /etc/crontab

पहले यह था -rw-rw-r--। वह एकमात्र बदलाव था। यह काम नहीं कर रहा था, अब यह है। फिर भी यकीन नहीं होता कि क्यों।


1
रूट crontab किसी भी कमांड को रूट के रूप में निष्पादित करेगा। गैर-रूट तक लिखने की अनुमति देने वाली अनुमतियों को एक सुरक्षा छेद माना जाएगा।
च्च्कॉट्रिल

@ChuckCottrill: लेकिन समूह लिखने वाले बिट ने केवल रूट समूह में उन लोगों को लिखने की पहुंच प्रदान की होगी - जो कि अभी मूल उपयोगकर्ता हैं?
jl6

0

मुझे भी इसी प्रकार की समस्या थी, लेकिन रूट को उपयोगकर्ता के रूप में निर्दिष्ट करने के बाद /etc/crontab, क्रोन नौकरी शुरू हो गई।

यह सिंटैक्स के कारण हो सकता है, crontab -eजिस पर से अलग है /etc/crontab

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