मैंने एक बैश स्क्रिप्ट को रूट के रूप में चलाने के लिए एक रूट क्रॉन जॉब स्थापित करने की कोशिश की, मिनट को 7,37, हर घंटे, महीने के हर दिन, हर महीने चलाने के लिए। यह लिपि में स्थित /usr/bin
और नामित है tunlrupdate.sh
। यह डीएनएस टुनलर को अपडेट करता है।
$ ls -l /usr/bin/tunlrupdate.sh
-rwxr-xr-x 1 root root 2133 Sep 24 15:42 /usr/bin/tunlrupdate.sh
यह बैश स्क्रिप्ट यहां उपलब्ध है ।
जब स्क्रिप्ट लिखी जाती है, तो लॉग में स्थित क्या हो रहा है /var/log/tunlr.log
इस रूट क्रोन जॉब को जोड़ने के लिए मैंने रूट के क्रॉस्टैब के लिए मानक का उपयोग किया
sudo crontab -e
और अंत में इन 2 लाइनों को सम्मिलित किया। मुझे उम्मीद है कि स्क्रिप्ट को जड़ के रूप में चलाने के लिए क्रोन होगा।
# check for updated Tunlr DNS every 30 minutes at the hour + 7 mn and hour + 37 mn
07,37 * * * * root /usr/bin/tunlrupdate.sh
बाद में एक कमांड sudo crontab -l
ने पुष्टि की कि क्रॉन जॉब डाला गया है।
मैंने उबंटू को रीबूट किया और लॉग फ़ाइल में जाँच रहा था कि क्या क्रोन नौकरी ठीक से शुरू की गई थी। हालाँकि, लॉगफ़ाइल में कुछ भी नहीं है /var/log/tunlr.log
जिसका अर्थ है कि काम कभी भी सफलतापूर्वक लॉन्च नहीं किया गया था।
मैंने जाँच की कि अगर मैं कमांड लाइन से स्क्रिप्ट चलाता हूँ
sudo /usr/bin/tunlrupdate.sh
फिर लॉगफाइल को तदनुसार अपडेट किया जाता है।
मेरे सिस्टम में यह क्रॉन जॉब योजना के अनुसार क्यों नहीं चल रहा है?
अद्यतन 1: सभी प्रस्तावित समाधान अब तक काम नहीं करते हैं। मैं सिस्टम लॉग को सूचीबद्ध करने के लिए एक सीएलआई के लिए ओली का धन्यवाद करता हूं sudo grep CRON /var/log/syslog
। हालाँकि मुझे एक CRON त्रुटि मिली
CRON[13092]: (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/php
/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete)
सुझाए गए पथ = स्क्रिप्ट में कार्यों के लिए जड़ से पूर्ण पथ का सम्मिलन और उपयोग या इसके बिना यहां सुझाए गए समाधान। मुझे अभी भी यह त्रुटि मिलती है।
कुछ खोज के बाद मैंने फ़ाइल में त्रुटि /usr/lib/php5/maxlifetime
बताई है जैसा कि यहाँ बताया गया है :Change #!/bin/sh -e --> #!/bin/sh -x
फिर मेरे सिस्टम में CRON त्रुटि लॉग को सूचीबद्ध करना
sudo grep CRON /var/log/syslog
Feb 11 18:07:01 Marius-PC CRON[14067]: (root) CMD (root /usr/bin/tunlrupdate.sh)
Feb 11 18:07:01 Marius-PC CRON[14066]: (root) MAIL (mailed 1 byte of output; but got
status 0x00ff, #012)
मुझे अभी भी बैश स्क्रिप्ट का निष्पादन नहीं मिला है। इस बार लॉग में कोई त्रुटि नहीं दिखाई गई है। यह सुनिश्चित करने के लिए कि यह स्क्रिप्ट की सामग्री नहीं थी, मैंने स्क्रिप्ट को निम्न 3 लाइनों में बदल दिया:
#!/bin/bash
LOGFILE=/var/log/tunlr.log
echo $LOGFILE >> $LOGFILE
मुझे अभी भी क्रोन की नौकरी नहीं मिली है। लॉग फ़ाइल में कुछ भी नहीं लिखा है। तो क्या एक खाली लिपि भी क्रोन में नहीं चलेगी? मुझे नहीं मिला। मुझे पता है कि इन 2 लाइनों के लिए कम एक स्क्रिप्ट की कोशिश कर रहा हूँ:
#!/bin/bash
exit 0
और अभी भी वही त्रुटि लॉग है। क्रोन स्क्रिप्ट के माध्यम से नहीं जाता है ...