केवल एक बार क्रॉन जॉब कैसे चलाएं?


14

मेरे पास एक नौकरी है जो हमेशा के लिए शुरू होती है। तो मैं इसे केवल एक बार "crontab -e" फ़ाइल में दर्ज करने और इसे बचाने के बाद (या) जब भी रिबूट होता है, तब इसे शुरू करना चाहता हूं।

इसे कैसे प्राप्त किया जाए?

जवाबों:


22

यदि आप बाद की तारीख में एक बार चलाना चाहते हैं , तो atकमांड का उपयोग करें ।

यदि आप चाहते हैं कि सिस्टम बूट पर एक बार कमांड चलाया जाए , तो इसका सही समाधान है:

  • सिस्टम RC स्क्रिप्ट (/etc/rc.local)
  • @rebootविशेष उपसर्ग के साथ crontab (मैनपेज देखें)

गैर-रूट उपयोगकर्ता के लिए उत्तरार्द्ध एकमात्र विकल्प है।


2
@Reboot का उल्लेख करने के लिए +1।
एलेक्स हॉल्स्ट

यदि संभव हो तो मैं हमेशा /etc/rc.local का उपयोग करना पसंद करूंगा ... मुझे संदेह है कि @reboot वास्तव में crond स्टार्टअप पर कमांड चलाता है, सिस्टम बूट नहीं। सूक्ष्म लेकिन संभव अंतर।
मिकीबी

मान लीजिए कि मैंने क्रेब फाइल में @reboot "cmd ............." दर्ज किया और इसे सहेज लिया। क्या यह कमान अब शुरू होगी? (या) क्या यह केवल रिबूट के बाद शुरू होता है?
रमा वदकट्टू

इसे आज़माएं और देखें :) आपको शायद क्या करने की ज़रूरत है, इसे at now
क्रेसटैब

अच्छा उत्तर। मैं हमेशा भूल जाता हूं @reboot
बिल वीस

9

आप भविष्य में किसी बिंदु पर नौकरी चलाने के लिए (1) का उपयोग कर सकते हैं। हालाँकि, यदि आप बूट पर कुछ चलाना चाहते हैं और यह अपने आप चालू रहेगा, तो शायद आप इसके लिए /etc/init.d/ में प्रविष्टि चाहते हैं? इससे आप इसे बूट पर शुरू कर सकते हैं।


1
आप r.local का भी उपयोग कर सकते हैं। /Etc/rc.local में कमांड " सभी अन्य init स्क्रिप्ट के बाद निष्पादित किया जाएगा । यदि आप पूर्ण Sys V शैली init सामान नहीं करना चाहते हैं, तो आप अपना आरंभिक सामान rc.local में डाल सकते हैं।"
जो

जो: अच्छी कॉल।
बिल वाइस

कमांड द्वारा शुरू की गई प्रक्रिया को कैसे रोकें? (मुझे पता है कि "ps कमांड" का उपयोग करके प्रोसेस आईडी की सूची देखने के बाद प्रोसेस आईडी को मार दिया जाता है। क्या यह "कमांड पर" के लिए भी काम करता है।) क्या कस्टम स्क्रिप्ट बनाना आसान है?
राम वडकट्टू

दोनों के लिए हाँ। सभी प्रक्रियाओं का उपयोग करके रोका जा सकता है kill(यह मानते हुए कि आपको ऐसा करने की अनुमति मिल गई है, जो आप अपनी प्रक्रियाओं के लिए करते हैं)। एक init स्क्रिप्ट बनाना वास्तव में आसान है। एक नज़र डालें जो /etc/init.d/एक स्क्रिप्ट है कि नहीं बहुत लंबा और मॉडल तुम्हारा के लिए यह करने के बाद, या के लिए गूगल making init scripts (your distribution)
बिल वीस

1
बहुत सारे डिस्ट्रोस में एक कंकाल स्क्रिप्ट ( /etc/init.d/skeletonओपनयूएसईएस पर) शामिल है जिसे आप अपने उपयोग के लिए अनुकूलित कर सकते हैं।
मिकीबी

3

एक नौकरी जो केवल एक बार चलती है और हमेशा के लिए चलती है जब तक आप इसे मरने के लिए नहीं कहते हैं, इसे "डेमॉन" कहा जाता है। वे आमतौर पर /etc/init.d/ में init स्क्रिप्ट के माध्यम से शुरू होते हैं।

यदि आपकी नौकरी किसी बिंदु पर समाप्त हो जाती है और इसे एक तरह की नौकरी माना जा सकता है, तो आप कमांड को देखना चाहते हैं। उदाहरण के लिए, यदि मैं आज रात 10 बजे खोज कमांड चलाना चाहता था और केवल एक बार मैं ऐसा करूंगा:

$ at 10PM
at> find /root > /root/find_results.list
at> <EOT>
job 3 at 2010-02-10 22:00

1

कमांड पर एक नजर है


जब सिस्टम रिबूट हो जाएगा तो क्या होगा? क्या मुझे फिर से "at कमांड" दर्ज करने की आवश्यकता है?
राम वडकट्टू

रीबूट्स पर कमांड एंट्रीज़ खो नहीं जाएगी। ibm.com/developerworks/linux/library/l-job-scheduling.html नौकरी शेड्यूलिंग के लिए एक दिलचस्प परिचय है
डोमिनिक

@ राम वदकट्टू: "कमांड एंट्रीज रिबूट्स में नहीं खोएगी।" ... जिसे अभी तक निष्पादित नहीं किया गया है। देखें मिकीबी का जवाब।
अगली सूचना तक रोक दिया गया।

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