मैं कैसे बता सकता हूं कि मेरा प्रति घंटा क्रॉन जॉब चला है?


26

मैंने एक फाइल बनाई है जिसका नाम ntpdateहै/etc/cron.hourly

#!/bin/sh
/usr/sbin/ntpdate-debian
date > /tmp/william_tmp
date > /william_tmp
date > ~/william_tmp
echo test

मैंने इस फाइल में चामोद 755 भी किया।

हालाँकि, मैं नहीं बता सकता कि फाइल चल पड़ी है या नहीं!

फ़ाइल किसी भी 3 निर्देशिका में नहीं बनाई गई है।

अगर मैं मैन्युअल रूप से चलाता हूं cd / && run-parts --report /etc/cron.hourlyतो फाइलें बन जाती हैं और मुझे इको मिलता है।

क्या कोई सुझाव दे सकता है (आदर्श रूप से कदम से कदम!) यह परीक्षण करने के लिए निर्देश है कि यह काम कर रहा है?

जवाबों:


25

क्रॉन का एक प्रमुख नुकसान एक बेहद सीमित शेल वातावरण में क्रोन रन है, जिसके परिणामस्वरूप बहुत सारे चर पर्यावरण में निर्यात नहीं किए जाते हैं, मुख्य रूप से $ PATH। सुनिश्चित करें कि आप सभी पूर्ण पथ निष्पादन करने के लिए, की तरह आम कार्यों सहित का उपयोग echo, uptime, dateपूर्ण पथ का उपयोग करने के लिए सभी की जरूरत है, आदि ( /bin/echo, /bin/date, /usr/bin/uptime)। किसी निष्पादन योग्य के लिए पथ निर्धारित करने के लिए, आप whichकमांड का उपयोग इस तरह कर सकते हैं : which echo- यह आपको उस टूल का पूरा रास्ता दिखाएगा।


जैसा कि चैट में चर्चा की गई है, इसके लिए धन्यवाद और मैं वास्तव में आशा करता हूं कि यह किसी और की मदद करेगा ... जबकि मैंने ntpdate के लिए गिरावट का रास्ता तय किया था, इसलिए मुझे विंडोज़ और इको / डेट का उपयोग सिर्फ "बिल्ट इन" होने के लिए किया जाता है, मैंने अभी-अभी ' t मुझे लगता है कि मुझे पूर्ण पथ की आवश्यकता होगी ... लिनक्स के बारे में बहुत कुछ सीखना और यह सही समझ में आता है!
विल्हिल

36

आपको अपनी /var/log/syslogलॉग फ़ाइल में दिखना चाहिए । यदि एक क्रोन चला है, तो इसकी एक पंक्ति होगी:

Jun 11 19:09:01 penguin CRON[17376]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete)
Jun 11 19:17:01 penguin CRON[17799]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)

समस्या निवारण युक्तियों के लिए, https://help.ubuntu.com/community/CronHowto#Troublesourcing_and_Common_Problems देखें


Syslog में कुछ भी नहीं है और मैं किसी भी कारण से नहीं देख सकता कि यह उस लिंक से क्यों विफल होगा :(
विल्हिल

1
यदि syslog ( grep -i cron /var/log/syslog /var/log/syslog.1) में कोई प्रविष्टियाँ नहीं हैं, तो जाँचना शुरू करें कि क्या क्रोन डेमॉन चल रहा है: ps uww -C cronएक प्रक्रिया के साथ एक पंक्ति होनी चाहिए।
लेकेनस्टाइन

भ्रामक होने के लिए क्षमा करें, सिसलॉग में क्रोन के लिए एंट्री होती है, बस इस कमांड से संबंधित कुछ नहीं है ... मुझे पता है कि कुछ नौकरियां हर घंटे के रूप में चलती हैं, मुझे एक नया मेल अलर्ट मिलता है ... AFAIK, जो काम कर रहे हैं कोंट्राब से, क्रोन में कुछ भी नहीं है। आमतौर पर जो मैं काम करने की कोशिश कर रहा हूं
wilhil

2

अपनी स्क्रिप्ट की पहली पंक्ति (दुभाषिया) को बदलने की कोशिश करें:

#!/bin/bash

मुझे पर्यावरण चर और PATH मुद्दों के साथ अतीत में भी समस्याएं हुई हैं। इंटरप्रेटर बदलने के बाद bashमेरे मुद्दे दूर हो गए थे।


1

यह देखते हुए कि मैंने clearme.shस्क्रिप्ट को इसमें जोड़ा है/etc/cron.hourly/

शक्तिशाली egrep और awk के साथ टर्मिनल में बस CRON कार्यों को फ़िल्टर करें :

$ cat /var/log/syslog | egrep clearme | awk "{ print $1 }" > ~/Desktop/cronlog.txt

आउटपुट जैसा दिखेगा:

Jan 14 15:20:01 markets-dev CRON[10089]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 15:40:01 markets-dev CRON[18042]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 16:00:01 markets-dev CRON[22817]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 16:20:01 markets-dev CRON[28183]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 16:40:01 markets-dev CRON[411]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 17:00:01 markets-dev CRON[5442]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)
Jan 14 17:20:01 markets-dev CRON[11935]: (dminca) CMD (root /etc/cron.hourly/clearme.sh)

चरण-दर-चरण सब कुछ समझाने के लिए:

  1. cat / var / log / syslog - मुझे सिस्टम लॉग प्रिंट करें
  2. egrep clearme - लेकिन केवल उन पंक्तियों का चयन करें जिनमें पाठ clearme शामिल है
  3. awk "{प्रिंट $ 1}" - मुझे उस पंक्ति को प्रिंट करें जिसमें पाठ स्पष्ट है
  4. > ~ / डेस्कटॉप / cronlog.txt - डेस्कटॉप निर्देशिका पर स्थित फ़ाइल cronlog.txt में परिणाम का उत्पादन ।

4 वां चरण वैकल्पिक है। यह फ़ाइल के बजाय टर्मिनल में परिणाम प्रिंट करेगा।

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