वहाँ एक तरीका है / / crontab के प्रारूप को मान्य?


35

मैं / etc / crontab में अनुसूचित कार्यों को चिपकाना पसंद करता हूं, इसलिए मैं एक नज़र में देख सकता हूं कि चलाने के लिए क्या निर्धारित है, भले ही उपयोगकर्ता जो भी कार्य करता है।

एकमात्र गोचा यह है कि प्रारूप को crontab -e के विपरीत सहेजने पर मान्य नहीं किया गया है - इसलिए एक आवारा चरित्र चुपचाप पूरे क्रोन को तोड़ सकता है।

क्या बचाने के पहले / बाद में / etc / crontab प्रारूप को मान्य करने का कोई तरीका है?


4
अगर, मेरी तरह, आप यहां यह बताने के लिए एक सरल (गैर-स्क्रिप्ट करने योग्य) तरीके की तलाश में आए कि क्या आपको अपना क्रोन प्रवेश सही मिला है, तो आपको cronchecker.net में रुचि हो सकती है - यह मानव के साथ क्रोन प्रविष्टियों के लिए एक ऑनलाइन सत्यापनकर्ता है- अनुकूल उत्पादन।
मैट गिब्सन

जवाबों:


17

एकमात्र विश्वसनीय तरीका जो मुझे मिला वह है लॉग को जांचना।

cron/etc/crontabहर मिनट की जाँच करता है, और एक संदेश को दर्शाता है जो यह बताता है कि उसने इसे पुनः लोड किया है, या कि यह एक त्रुटि पाई गई है।

इसलिए संपादन के बाद, इसे चलाएं:

sleep 60; grep crontab /var/log/syslog | tail

या, एक पूर्ण मिनट इंतजार नहीं करने के लिए, लेकिन केवल अगले मिनट + 5 सेकंड तक:

sleep $(( 60 - $(date +%S) + 5 )) && grep cron /var/log/syslog | tail

त्रुटि के साथ उदाहरण आउटपुट:

Jan  9 19:10:57 r530a cron[107258]: Error: bad minute; while reading /etc/crontab
Jan  9 19:10:57 r530a cron[107258]: (*system*) ERROR (Syntax error, this crontab file will be ignored)

अच्छा उत्पादन:

Jan  9 19:19:01 r530a cron[107258]: (*system*) RELOAD (/etc/crontab)

यह डेबियन 8. अन्य प्रणालियों पर, क्रोन एक अलग फ़ाइल में लॉग इन कर सकता है।

(मुझे लगा कि मैं systemd's का उपयोग करके सही लॉग फ़ाइल के शिकार से बच सकता हूं journalctl -u cron, लेकिन उसने मुझे ये लॉग प्रविष्टियाँ नहीं दिखाईं, और वास्तव में लगता है कि किसी कारणवश 2 दिन पहले क्रोन घटनाओं को रोकना पड़ा है)


FreeBSD 10.3 पर परीक्षण किया गया। एक आकर्षण की तरह काम करता है, बस लॉग पथ को / var / log / cron
Jette


11

दुष्ट कूल शेल स्क्रिप्ट में एक शेल स्क्रिप्ट होती है जो क्रॉस्टैब फ़ाइलों को मान्य करती है।

आप यहां स्क्रिप्ट युक्त ज़िप संग्रह प्राप्त कर सकते हैं

लिपि को वेरिफाइक्रोन कहा जाता है


1
स्रोत पुस्तक के लिए साइट पर भी है: intuitive.com/wicked/showscript.cgi?053-verifycron.sh वास्तव में उस पुस्तक की तरह।

लिंक 11
जून

3

मुझे यह अच्छा समाधान यहां मिला: https://crontab.guru

यह सिर्फ क्रेस्टैब को मान्य नहीं करता है, यह आपको स्पष्ट रूप से बताता है कि क्रॉस्टैब क्या और कब चलेगा, और त्रुटियां कहां हैं।


0

उबंटू पर, ऐसा लगता है जैसे मैं बस चला सकता हूं:

crontab path/to/crontab/file

नोट: इस क्रोनजोब को शुरू करने का दुष्प्रभाव है (धन्यवाद @NZD)

यदि फ़ाइल अमान्य है, तो मैं एक त्रुटि करूंगा, जैसे:

"crontab":11: bad minute
errors in crontab file, can't install.

1
यह आदेश crontab फ़ाइल की जाँच करता है, लेकिन एक ही समय में इसे स्थापित करता है (यदि इसमें कोई त्रुटि नहीं है)। यह शायद ओपी के लिए एक अवांछित दुष्प्रभाव है।
NZD

धन्यवाद @NZD, मैंने यह सुनिश्चित करने के लिए अपने जवाब में जोड़ा है कि ओपी इसके बारे में पता है।
conradkdotcom

@conradk कमांड क्रोनजोब शुरू नहीं करता है, यह प्रदान की गई फ़ाइल के साथ उपयोगकर्ता की मौजूदा क्रॉस्टैब फ़ाइल को ओवरराइट करता है।
MadHatter

यह वास्तव में crontab के साथ सभी संभावित समस्याओं के लिए काम नहीं करता है; यह कुछ चकाचौंध समस्याओं को पकड़ लेगा, लेकिन यह इसे नहीं पकड़ता है, उदाहरण के लिए: * 4/0 * * /bin/myscript.sh - 4/0यह अमान्य है। लेकिन इस विधि द्वारा पकड़ा नहीं है
JDS

@ जेडडीएस क्या यह एक कदम मूल्य नहीं है? क्या 0मना करने का एक चरण मूल्य है ? unix.stackexchange.com/questions/32027/…
conradkdotcom
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.