Crontab के माध्यम से शेल स्क्रिप्ट को कैसे निष्पादित करें?


22

मेरे पास एक notify.shस्क्रिप्ट है जो इस तरह दिखती है:

notify-send "hi welcome"

दोपहर 2 बजे के लिए मेरा कॉन्ट्राब अधिसूचना:

0 14 * * * home/hacks/notify.sh

हालाँकि, यह काम नहीं करता है। समस्या क्या है?

जवाबों:


39

आपकी स्क्रिप्ट एक # याद आ रही है! शुरुआत में लाइन, जो कि कर्नेल द्वारा बताई गई जादू है, यह कहने के लिए कि स्क्रिप्ट के लिए किस कमांड दुभाषिया का उपयोग किया जाना है।

इसे इस तरह बनाओ:

#!/bin/sh
notify-send "hi welcome"

और सुनिश्चित करें कि स्क्रिप्ट निष्पादन योग्य है:

ls -l home/hacks/notify.sh
chmod +x home/hacks/notify.sh
ls -l home/hacks/notify.sh

इसके अलावा, जब से आप दिन में सिर्फ एक बार ऐसा करने के लिए कह रहे हैं, क्या क्रेतेब का टाइमजोन आपके खुद के टाइमज़ोन के समान है? आपको यह दोपहर 2 बजे GMT पर हो सकता है।


+1 यह उत्तर भयानक है - विशेष रूप से स्क्रिप्ट के बारे में बात को ध्यान देने योग्य होने की आवश्यकता है! धन्यवाद!
FXQuantTrader

बहुत सूक्ष्म व्याख्या। मेरा
उत्थान

18

Crontab को चलाना केवल बनाना आसान है। यहां मैं कहने जा रहा हूं कि कॉट्रैब जॉब कैसे चलाएं। यह किसी के लिए भी उपयोगी है जो क्रॉस्टैब पर अटक गया है।

*/1 * * * * cd /home/hacks && sh notify.sh

स्क्रिप्ट को निष्पादन योग्य बनाने के लिए, हमें करना होगा:

chmod +x home/hacks/notify.sh

यहाँ मैं इस स्क्रिप्ट को हर एक मिनट के लिए चलाता हूँ ... स्क्रिप्ट को नीचे करके, आप इसे लॉग फ़ाइल में लिख सकते हैं कि क्या इसका काम है

लॉग लिखो

*/1 * * * * cd /home/hacks && sh notify.sh>>test.log

मेल भेजे

*/1 * * * * cd /home/hacks && sh notify.sh>>test.log | mail -s "Hi this is example" user@domain.com

2
isnt कि "* / 1 * * * * sh /home/hacks/notify.sh" भी काम करेगा?
user1179459

5

4 परिकल्पना:

  • क्रोन डेमॉन नहीं चल रहा है (ए ps axfww | grep cronऔर चेक करें)

  • अधिसूचित-भेज एक टर्मिनल, या एक एक्स सत्र के लिए आउटपुट भेजने की कोशिश कर रहा है - लेकिन यह cronपर्यावरण के भीतर से चलाया जाता है और यह नहीं जानता कि "किससे बात करनी है", इसलिए बोलने के लिए।

  • आपकी स्क्रिप्ट निष्पादन योग्य नहीं है

  • home/crontab लिपि में पथ उपयोगकर्ता स्क्रिप्ट के रूप में मार डाला जाता है के सापेक्ष है। पूर्ण पथ का उपयोग करने का प्रयास करें


1

export DISPLAY=:0अपनी स्क्रिप्ट में सूचना-भेजें लाइन के ऊपर जोड़ें । यह लोर्नजोग के दूसरे बिंदु को संबोधित करता है।


0

आपको निम्नलिखित कमांड द्वारा क्रॉस्टैब खोलना है:

crontab -u username -e (to edit) -l(to list) -r(to remove) 10(minutes) 8-15(hours) *(Day of month) *(month) 1,3,5(days of week) /path/to/script/script_name.sh

यह आपकी स्क्रिप्ट को हर सोमवार, बुधवार और शुक्रवार को सुबह 8 बजकर 10 मिनट पर सुबह 8 बजकर 30 मिनट पर एक बार चलाएगा।


0

सबसे पहले, हमें कमांड के साथ क्रॉस्टेब को संपादित करने की आवश्यकता है crontab -eऔर अंदर से यह Crontabनिष्पादन योग्य स्क्रिप्ट का पथ और आपके मामले में इस तरह जोड़ता है * 14 * * * home/hacks/notify.sh >/dev/null 2>&1

प्रारंभ / रोकें / क्रोन सेवा को पुनरारंभ करें

  • /etc/init.d/crond start /stop / restart
  • service crond start /stop /restart
  • systemctl stop crond.service

systemctl stop crond.service


-2

काफी सरल, के माध्यम से crontab फ़ाइल के नीचे निम्नलिखित पंक्ति जोड़ें: sudo nano /etc/crontab

@reboot root cd /home/pi/node-sonos-http-api && npm start &


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