इंटरएक्टिव एडिटर के बिना स्वचालित रूप से बैश का उपयोग करके क्रोन जॉब कैसे बनाएं?


395

क्या crontab में संपादक (crontab -e) का उपयोग किए बिना क्रोन जॉब्स बनाने का तर्क है। यदि हां, तो कोड क्या बैश स्क्रिप्ट से क्रोनजॉब बनाएगा?



5
अफसोस की बात है कि, यहां अधिकांश शीर्ष उत्तर बस यह दिखा रहे हैं कि कैसेट को संशोधित करने के लिए - यथोचित सुरक्षित तरीकों से - लेकिन मुझे लगता है कि यह गलत दृष्टिकोण है। बेहतर, सुरक्षित और सरल एक फ़ाइल को {{cron.d}} में छोड़ना है, और वहाँ (वर्तमान में) कम-वोट के उत्तर हैं जो बताते हैं कि यदि आप आगे नीचे देखते हैं तो यह कैसे करें।
gregmac

जवाबों:


539

आप क्रॉस्टैब को इस प्रकार जोड़ सकते हैं:

#write out current crontab
crontab -l > mycron
#echo new cron into cron file
echo "00 09 * * 1-5 echo hello" >> mycron
#install new cron file
crontab mycron
rm mycron

क्रोन लाइन स्पष्टीकरण

* * * * * "command to be executed"
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)

स्रोत nixCraft


14
आपको टेम्पेफाइल या मैकटेम्प का उपयोग करना चाहिए
पावेल पोल्विकेज़

166
(crontab -l; echo "00 09 * * 1-5 इको हेल्लो") | crontab -
ईदो

32
(crontab -l ; echo "00 09 * * 1-5 echo hello") | crontab -- ईदो के जवाब को कॉपी करना आसान
WBAR

8
मुझे लगता है कि बदलने के लिए सुझाव देंगे ;साथ &&मामला है, तो के खिलाफ एक सुरक्षित-गार्ड के रूप में crontab -lविफल रहता है। हां, जैसे:(crontab -l && echo "0 0 0 0 0 some entry") | crontab -
मैकयूर्स

12
@MacUser, crontab -lअगर कोई क्रॉस्टैब नहीं है, तो असफल हो जाता है, इसलिए &&स्क्रिप्ट के लिए क्रॉस्टैब में पहली प्रविष्टि को जोड़ना असंभव हो जाता है।
JPhi1618

312

आप इसे ऑन-द-फ्लाई करने में सक्षम हो सकते हैं

crontab -l | { cat; echo "0 0 0 0 0 some entry"; } | crontab -

crontab -lवर्तमान crontab नौकरियों को सूचीबद्ध करता है, catइसे प्रिंट करता है, echoनए कमांड को प्रिंट करता है और crontab -सभी मुद्रित सामान को crontab फ़ाइल में जोड़ता है। आप एक नया करके प्रभाव देख सकते हैं crontab -l


3
धन्यवाद, क्या आप वाक्यविन्यास समझा सकते हैं, या एक यूआरएल को इंगित कर सकते हैं जो इसे समझाता है?
साइट्स

9
crontab -lवर्तमान crontab नौकरियों को सूचीबद्ध करता है, catइसे प्रिंट करता है, echoनए कमांड को प्रिंट करता है और crontab -सभी मुद्रित सामान को crontab फ़ाइल में जोड़ता है। आप crontab -l
nha

3
मेरे लिए एक इलाज का काम करता है। यदि उपयोगकर्ता के पास कोई मौजूदा क्रैस्टब नहीं है no crontab for <username>, तो आप देखेंगे , लेकिन यह वैसे भी काम करता है।
11

21
मेरे Amazon EC2 उदाहरण पर काम नहीं करता है। इसके बजाय, (crontab -l ; echo "00 09 * * 1-5 echo hello") | crontab -काम करता है।
स्टीफन ब्रुकर्ट

11
यह UUcatA के लिए एक उम्मीदवार की तरह दिखता है ।
ceving

86

इस छोटी को किसी अस्थायी फ़ाइल की आवश्यकता नहीं है, यह कई सम्मिलन के लिए प्रतिरक्षा है, और यह आपको मौजूदा प्रविष्टि का शेड्यूल बदलने देता है।

कहो कि आपके पास ये हैं:

croncmd="/home/me/myfunction myargs > /home/me/myfunction.log 2>&1"
cronjob="0 */15 * * * $croncmd"

इसे डुप्लीकेट में जोड़ने के लिए:

( crontab -l | grep -v -F "$croncmd" ; echo "$cronjob" ) | crontab -

अपने मौजूदा कार्यक्रम जो भी हो, उसे क्रेसटैब से हटाने के लिए:

( crontab -l | grep -v -F "$croncmd" ) | crontab -

टिप्पणियाँ:

  • grep -F स्ट्रिंग से शाब्दिक रूप से मेल खाता है, क्योंकि हम इसे एक नियमित अभिव्यक्ति के रूप में व्याख्या नहीं करना चाहते हैं
  • हम समय निर्धारण की भी उपेक्षा करते हैं और केवल कमांड की तलाश करते हैं। इस तरफ; क्रॉस्टैब में एक नई लाइन जोड़ने के जोखिम के बिना शेड्यूल को बदला जा सकता है

@ मैं: क्या आप विस्तृत कर सकते हैं?
मूनकैक्टस

आपको इसे अपने कंप्यूटर पर आज़माना चाहिए
moeseth

2
@moeseth: मैंने स्पष्ट रूप से इसे अपने कंप्यूटर (linux) पर आज़माया था। मैं यादृच्छिक गैर-कार्य सामग्री का सुझाव नहीं दूंगा: /
दूंगा

2
वैसे, 27 लोग गलत नहीं हो सकते (आज तक)। तो कृपया वर्णन करें कि यह आपके सेटअप के लिए काम क्यों नहीं कर रहा है, इसलिए हम मदद कर सकते हैं।
मूनकैक्टस

2
यह OSX समस्या हो सकती है।
मोसेठ

40

आपकी मदद के लिए सभी को धन्यवाद। यहाँ और अन्य जगहों पर जो कुछ भी मुझे मिला, उसे साथ लेकर आगे बढ़ते हुए:

कोड

command="php $INSTALL/indefero/scripts/gitcron.php"
job="0 0 * * 0 $command"
cat <(fgrep -i -v "$command" <(crontab -l)) <(echo "$job") | crontab -

मैं खुद को दोहराए बिना दो चर की आवश्यकता को समाप्त करने का तरीका नहीं पता लगा सका।

commandजाहिर है कि मैं जिस कार्यक्रम को निर्धारित करना चाहता हूं। शेड्यूलिंग डेटा jobलेता है $commandऔर जोड़ता है। मुझे कोड की लाइन में दोनों चर की आवश्यकता थी जो काम करता है।

विवरण

  1. डस्कीफ्लिप के लिए क्रेडिट, मैं इस छोटे से पुनर्निर्देशित चीज़ का उपयोग करता हूं (<(*command*) ) कमांड के crontab -lइनपुट में आउटपुट को चालू करने के लिए fgrep
  2. fgrep फिर किसी भी मैच को फ़िल्टर करता है $command ( -vविकल्प), केस-असंवेदनशील ( -iविकल्प) के ।
  3. फिर से, रिडायरेक्ट थैरेपी ( <(*command*)) का उपयोग परिणाम को catकमांड के इनपुट में वापस लाने के लिए किया जाता है ।
  4. catआदेश भी प्राप्त करता है echo "$job"(आत्म व्याख्यात्मक), फिर से, रीडायरेक्ट thingy का उपयोग (के माध्यम से<(*command*) )।
  5. तो फ़िल्टर्ड आउटपुट से crontab -lऔर सरलecho "$job" , संयुक्त, पाइप किए जाते हैं ('|') crontab -को आखिरकार लिखा जाना चाहिए।
  6. और उसके बाद वे सभी हमेशा खुशी से रहे!

संक्षेप में:

कोड की यह पंक्ति किसी भी क्रॉन जॉब्स को फ़िल्टर करती है जो कमांड से मेल खाती है, फिर शेष क्रॉन जॉब्स को नए के साथ लिखते हैं, प्रभावी रूप से "ऐड" या "अपडेट" फ़ंक्शन की तरह कार्य करते हैं। इसका उपयोग करने के लिए, आपको केवल commandऔर jobचर के मूल्यों को स्वैप करना होगा ।


5
पढ़ने वाले अन्य लोगों के लाभ के लिए, इस दृष्टिकोण का लाभ यह है कि आप इसे कॉन्टैब में डुप्लिकेट प्रविष्टियों के बारे में चिंता किए बिना कई बार चला सकते हैं (सभी अन्य समाधानों के विपरीत)। इस वजह सेfgrep -v
aleemb

5
यदि आप पाइपिंग चीजों के पारंपरिक बाएं-से-दाएं तरीके को पसंद करते हैं, तो अंतिम पंक्ति को इसके साथ बदलें: crontab -l | fgrep -i -v "$command" | { cat; echo "$job"; } | crontab -l
एंटोनी लिजी

1
@ एंटोनीलाइज़ी, आपके जवाब में अंत में अतिरिक्त "एल" है, जो कि नहीं होना चाहिए।
हेनरी

26

EDIT (ओवर राइटिंग):

cat <(crontab -l) <(echo "1 2 3 4 5 scripty.sh") | crontab -

यह किसी भी कंटेंट सामग्री की जगह लेगा
TheBonsai

1
@ TheBonsai ओह मैं देख रहा हूँ, मैंने इसे अब ठीक कर दिया है, इसलिए इसे मौजूदा कॉन्टैब कंटेंट के लिए नए कमांड को APPEND करना चाहिए
duckyflip

3
ध्यान रखें, बैश की प्रक्रिया प्रतिस्थापन त्रुटियों को निगलती है। यदि crontab -lविफल रहता है, लेकिन crontab -सफल होता है, तो आपका क्रैस्टब एक-लाइनर होगा।
ceving

13

Crontab के उपयोग के आस-पास बहुत सारे अच्छे उत्तर हैं, लेकिन एक सरल विधि का कोई उल्लेख नहीं है, जैसे कि उपयोग करना cron

उपयोग करने cronसे सिस्टम फ़ाइलों और निर्देशिकाओं का लाभ उठाया जाएगा /etc/crontab, /etc/cron.daily,weekly,hourlyया /etc/cron.d/:

cat > /etc/cron.d/<job> << EOF
SHELL=/bin/bash 
PATH=/sbin:/bin:/usr/sbin:/usr/bin 
MAILTO=root HOME=/  
01 * * * * <user> <command>
EOF

इस उपर्युक्त उदाहरण में, हमने एक फ़ाइल बनाई /etc/cron.d/, जिसमें कमांड के लिए पर्यावरण वेरिएबल्स को सफलतापूर्वक निष्पादित करने के userलिए, और कमांड के लिए और commandखुद को प्रदान किया। यह फ़ाइल निष्पादन योग्य नहीं होनी चाहिए और नाम में केवल अल्फा-न्यूमेरिक और हाइफ़न (नीचे अधिक विवरण) होना चाहिए।

हालांकि पूरी तरह से जवाब देने के लिए, आइए crontabबनाम के बीच के अंतर को देखें cron/crond:

crontab -- maintain tables for driving cron for individual users

जो लोग सिस्टम पर अपने उपयोगकर्ता के संदर्भ में नौकरी चलाना चाहते हैं, उनके crontabलिए यह सही अर्थ है।

cron -- daemon to execute scheduled commands

उन लोगों के लिए जो कॉन्फ़िगरेशन प्रबंधन का उपयोग करते हैं या अन्य उपयोगकर्ताओं के लिए नौकरियों का प्रबंधन करना चाहते हैं, जिस स्थिति में हमें उपयोग करना चाहिए cron

मैनपेज़ का एक त्वरित अंश आपको कुछ उदाहरण देता है कि क्या करना है और क्या नहीं करना है:

/ etc / crontab और /etc/cron.d में फ़ाइलें रूट के स्वामित्व में होनी चाहिए, और समूह- या अन्य-लेखन योग्य नहीं होनी चाहिए। स्पूल क्षेत्र के विपरीत, /etc/cron.d के तहत या /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly और /etc-cron.monthly के तहत फाइलें भी हो सकती हैं। सिमिलिंक, बशर्ते कि सिम्लिंक और फाइल दोनों इसे रूट के स्वामित्व में हैं। /Etc/cron.d के अंतर्गत फ़ाइलों को निष्पादन योग्य होने की आवश्यकता नहीं है, जबकि /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly और /etc-cron.monthly के रूप में फ़ाइलें वे रन-पार्ट्स द्वारा चलाए जाते हैं (अधिक जानकारी के लिए रन-पार्ट्स (8) देखें)।

स्रोत: http://manpages.ubuntu.com/manpages/trusty/man8/cron.8.html

इस तरीके से क्रोन का प्रबंधन करना सिस्टम के दृष्टिकोण से आसान और अधिक मापनीय है, लेकिन हमेशा सबसे अच्छा समाधान नहीं होगा।


1
यह ध्यान देने योग्य हो सकता है कि <job>इसमें फ़ाइल एक्सटेंशन शामिल नहीं होना चाहिए।
1

7

संभावना है कि आप इसे स्वचालित कर रहे हैं, और आप एक भी नौकरी दो बार नहीं चाहते हैं। उस मामले में उपयोग करें:

__cron="1 2 3 4 5 /root/bin/backup.sh"
cat <(crontab -l) |grep -v "${__cron}" <(echo "${__cron}")

यह केवल तभी काम करता है जब आप BASH का उपयोग कर रहे हों। मुझे सही DASH ( sh) सिंटैक्स की जानकारी नहीं है।

अद्यतन: यह काम नहीं करता है यदि उपयोगकर्ता के पास अभी तक एक कॉन्ट्राब नहीं है। एक और अधिक विश्वसनीय तरीका होगा:

(crontab -l ; echo "1 2 3 4 5 /root/bin/backup.sh") | sort - | uniq - | crontab - 

वैकल्पिक रूप से, यदि आपका डिस्ट्रो इसका समर्थन करता है, तो आप एक अलग फाइल का भी उपयोग कर सकते हैं:

echo "1 2 3 4 5 /root/bin/backup.sh" |sudo tee /etc/crond.d/backup

उन लोगों को एक और SO प्रश्न मिला ।


होश के बजाय श का उपयोग करना?
kvz

फिर भी sh: 1: Syntax error: "(" unexpected का उपयोग कर रहा है
बटांडवा

यह केवल तभी काम करता है जब आप BASH का उपयोग कर रहे हों। मुझे सही DASH (sh) सिंटैक्स की जानकारी नहीं है। उत्तर के रूप में अच्छी तरह से अद्यतन
kvz

1
fwiw, मुझे bash का उपयोग करके यह त्रुटि मिलती है अगर <और के बीच कोई स्थान है (। इसका मतलब है कि < (विफल रहता है, लेकिन <(काम करता है, जब तक कि वहाँ अपने कार्यक्रम में तारक ... हैं
doublesharp

मेरा मानना ​​है कि यह सही तरीका है:cat <(crontab -l |grep -v "${CRON}") <(echo "${CRON}") | crontab -
स्टैनिस्लाव

5

BASH स्क्रिप्ट के साथ क्रॉस्टैब के अच्छे त्वरित और गंदे निर्माण / प्रतिस्थापन के लिए, मैंने इस नोटेशन का उपयोग किया:

crontab <<EOF
00 09 * * 1-5 echo hello
EOF

5

एक वैरिएंट जो केवल क्रीटैब को संपादित करता है यदि वांछित स्ट्रिंग वहां नहीं मिलती है:

CMD="/sbin/modprobe fcpci"
JOB="@reboot $CMD"
TMPC="mycron"
grep "$CMD" -q <(crontab -l) || (crontab -l>"$TMPC"; echo "$JOB">>"$TMPC"; crontab "$TMPC")

3

यदि आप विक्सी क्रोन का उपयोग कर रहे हैं, उदाहरण के लिए, अधिकांश लिनक्स वितरणों पर, तो आप व्यक्तिगत क्रोनजॉब के साथ /etc/cron.d में फ़ाइल डाल सकते हैं।

यह केवल रूट के लिए काम करता है। यदि आपका सिस्टम इसका समर्थन करता है तो आपको वहां कई उदाहरण देखने चाहिए। (नोट लाइन में शामिल उपयोगकर्ता नाम, पुराने / आदि / crontab के समान सिंटैक्स में)

यह क्रोन में एक दुख की बात है कि एक नियमित उपयोगकर्ता के रूप में इसे संभालने का कोई तरीका नहीं है, और इतने सारे क्रोन कार्यान्वयन के पास इसे संभालने का कोई तरीका नहीं है।


2

तो, डेबियन, उबंटू में, और इसी तरह के कई डेबियन आधारित डिस्ट्रो ...

एक क्रोन टास्क कंसीनेशन मैकेनिज्म है जो एक कॉन्फिग फाइल लेता है, उन्हें बंडल करता है और उन्हें आपके क्रोन सर्विस में जोड़ता है।

आप /etc/cron.d/somefilename के अंतर्गत कोई फ़ाइल रख सकते हैं जहाँ somefilename जो आप चाहते हैं।

sudo echo "0,15,30,45 * * * * ntpdate -u time.nist.gov" >> /etc/cron.d/vmclocksync

आइए इसे अलग करें:

sudo - क्योंकि आपको / etc डायरेक्टरी के तहत cron configs को बदलने के लिए एलिवेटेड विशेषाधिकार की आवश्यकता होती है

इको - एसटीडी पर आउटपुट बनाने के लिए एक वाहन। प्रिंटफ, कैट ... साथ ही काम करेगा

"- अपने स्ट्रिंग की शुरुआत में एक डबलक्वेस्ट का उपयोग करें, आप एक पेशेवर हैं

0,15,30,45 * * * * - मानक क्रोन रन शेड्यूल, यह हर 15 मिनट में चलता है

ntpdate -u time.nist.gov - वास्तविक कमांड जिसे मैं चलाना चाहता हूं

"- क्योंकि मेरी पहली डबल कोट्स को आउटपुट होने वाली लाइन को बंद करने के लिए एक दोस्त की आवश्यकता होती है

>> - ओवरराइट के बजाय डबल रीडायरेक्ट जुड़ता है *

/etc/cron.d/vmclocksync - vmclocksync मैंने जो फ़ाइल नाम चुना है, वह /etc/cron.d/ में जाता है


* यदि हम> रीडायरेक्ट का उपयोग करते हैं, तो हम गारंटी दे सकते हैं कि हमारे पास केवल एक कार्य प्रविष्टि थी। लेकिन, हमें मौजूदा फ़ाइल में किसी भी अन्य नियमों को उड़ाने का जोखिम होगा। आप अपने लिए तय कर सकते हैं कि> के साथ संभावित विनाश सही है या संभव डुप्लिकेट के साथ >> आपके लिए हैं। वैकल्पिक रूप से, यदि आप फ़ाइल नाम मौजूद है, अगर उसमें कुछ भी है, और क्या आप किसी तरह का डुप्लिकेट जोड़ रहे हैं, यह जांचने के लिए आप कुछ जटिल या जुड़े हुए हो सकते हैं - लेकिन, मेरे पास करने के लिए सामान है और मैं ऐसा नहीं कर सकता तुम अभी।


2

इंटरैक्टिव एडिटर के बिना क्रॉन जॉब जोड़ने के लिए बैश स्क्रिप्ट। नीचे दिए गए कोड में लिनक्स फाइलों का उपयोग करके क्रोनजोब को जोड़ने में मदद मिलती है।

#!/bin/bash

cron_path=/var/spool/cron/crontabs/root

#cron job to run every 10 min.
echo "*/10 * * * * command to be executed" >> $cron_path

#cron job to run every 1 hour.
echo "0 */1 * * * command to be executed" >> $cron_path

1
मुझे पता है कि यह एक loooong समय रहा है, लेकिन यह अभी भी एकमात्र ठीक जवाब है, क्योंकि सभी सबसे अधिक मतदान करने वाले पुराने क्रॉनों को हटाते हैं, बस नए को जोड़ते हैं।
एफई

1
यह एक क्रोन स्थापित नहीं करता है। यह सिर्फ एक फ़ाइल के लिए इसे संलग्न करता है। नई प्रविष्टि स्थापित करने के लिए आपको किसी तरह क्रोन प्रक्रिया को सूचित करना होगा।
अपूर्व पारिजात २५'१

1

यहाँ crontabदोहराव के बिना एक कमांड जोड़ने के लिए एक बैश फ़ंक्शन है

function addtocrontab () {
  local frequency=$1
  local command=$2
  local job="$frequency $command"
  cat <(fgrep -i -v "$command" <(crontab -l)) <(echo "$job") | crontab -
}
addtocrontab "0 0 1 * *" "echo hello"

1
CRON="1 2 3 4 5 /root/bin/backup.sh" 
cat < (crontab -l) |grep -v "${CRON}" < (echo "${CRON}")

Add -w पैरामीटर को grep की सटीक कमांड, बिना -w पैरामीटर के क्रोनजॉब "परीक्षण" को जोड़ने के कारण क्रॉन जॉब का विलोपन "test123"

cronjobs को जोड़ने / हटाने के लिए स्क्रिप्ट फ़ंक्शन। कोई दोहराव प्रविष्टियाँ:

cronjob_editor () {         
# usage: cronjob_editor '<interval>' '<command>' <add|remove>

if [[ -z "$1" ]] ;then printf " no interval specified\n" ;fi
if [[ -z "$2" ]] ;then printf " no command specified\n" ;fi
if [[ -z "$3" ]] ;then printf " no action specified\n" ;fi

if [[ "$3" == add ]] ;then
    # add cronjob, no duplication:
    ( crontab -l | grep -v -F -w "$2" ; echo "$1 $2" ) | crontab -
elif [[ "$3" == remove ]] ;then
    # remove cronjob:
    ( crontab -l | grep -v -F -w "$2" ) | crontab -
fi 
} 
cronjob_editor "$1" "$2" "$3"

परीक्षण किया गया:

$ ./cronjob_editor.sh '*/10 * * * *' 'echo "this is a test" > export_file' add
$ crontab  -l
$ */10 * * * * echo "this is a test" > export_file

यदि आपके पास दो बार (अलग-अलग समय पर चलने) क्रॉस्टेब में एक ही कमांड है, तो दोनों पंक्तियों को हटा देगा।
माइकलके

1

मेरा पसंदीदा समाधान यह होगा:

(crontab -l | grep . ; echo -e "0 4 * * * myscript\n") | crontab -

यह सुनिश्चित करेगा कि आप रिक्त नई पंक्ति को नीचे सही तरीके से संभाल रहे हैं। Crontab के साथ समस्याओं से बचने के लिए आपको आमतौर पर crontab फ़ाइल को रिक्त नई पंक्ति के साथ समाप्त करना चाहिए। और ऊपर की स्क्रिप्ट यह सुनिश्चित करती है कि यह पहले "grep" के साथ किसी भी रिक्त रेखा को हटा दे। भाग, और फिर स्क्रिप्ट के अंत में "\ n" के साथ अंत में एक नई रिक्त पंक्ति में जोड़ें। यह आपकी नई कमांड के ऊपर एक रिक्त रेखा प्राप्त करने से भी रोकेगा यदि आपकी मौजूदा crontab फ़ाइल रिक्त रेखा के साथ समाप्त होती है।



0

नहीं, क्रोनब फ़ाइलों को संशोधित करने के लिए क्रॉस्टैब में कोई विकल्प नहीं है।

आपको इसके लिए: वर्तमान क्रोन फ़ाइल (crontab -l> newfile) लेनी है, इसे बदलें और नई फ़ाइल को जगह दें (crontab newfile)।

यदि आप perl से परिचित हैं, तो आप इस मॉड्यूल का उपयोग कर सकते हैं विन्यास :: Crontab

एलएलपी, एंड्रिया


0

cronjobs जोड़ने के लिए स्क्रिप्ट समारोह। डुप्लिकेट प्रविष्टियों की जाँच करें, उपयोगी अभिव्यक्ति *> "

cronjob_creator () {         
# usage: cronjob_creator '<interval>' '<command>'

  if [[ -z $1 ]] ;then
    printf " no interval specified\n"
elif [[ -z $2 ]] ;then
    printf " no command specified\n"
else
    CRONIN="/tmp/cti_tmp"
    crontab -l | grep -vw "$1 $2" > "$CRONIN"
    echo "$1 $2" >> $CRONIN
    crontab "$CRONIN"
    rm $CRONIN
fi
}

परीक्षण किया गया:

$ ./cronjob_creator.sh '*/10 * * * *' 'echo "this is a test" > export_file'
$ crontab  -l
$ */10 * * * * echo "this is a test" > export_file

स्रोत: मेरा दिमाग;)


-5

आप शायद एडिट करने के लिए डिफ़ॉल्ट एडिटर को बदल सकते हैं और एडिट करने के लिए एक हेरेडोक का उपयोग कर सकते हैं।

EDITOR=ed
export EDITOR

crontab -e << EOF
> a
> * * * * * Myscript
> * * * * * AnotherScript
> * * * * * MoreScript
> .
> w
> q
> EOF

प्रमुख नोट > कि उस कोड में का मतलब है कि नई लाइन बनाने के लिए रिटर्न / एंटर की को दबाया गया है।

एक साधन तो संलग्न यह अधिलेखित कुछ भी नहीं होगा।

आप संपादन कर रहे हैं इसका मतलब है।

साधन परिवर्तन लिखें।

क्ष साधन QUIT या बाहर निकलने के एड।

आप इसे देख सकते हैं

crontab -l

आप एक प्रविष्टि भी हटा सकते हैं।

EDITOR=ed
export EDITOR

crontab -e << EOF
> /Myscript/
> d
> .
> w
> q
> EOF

वह इसमें माईस्क्रिप्ट के साथ क्रॉस्टैब एंट्री को हटा देगा।

साधन अंदर पैटर्न हटाना / /

इसकी दोबारा जांच नहीं

crontab -l

यह समाधान स्क्रिप्ट के अंदर बहुत कम काम करता है > बेशक :-)

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