मैं क्रॉन जॉब कैसे सेट करूं?


534

मैं एक कार्य को नियमित रूप से चलाने के लिए शेड्यूल करना चाहता हूं और सुना है कि क्रोन ऐसा करने का तरीका है।

मैं उबंटू में क्रोन नौकरियों को कैसे जोड़ूं?

जवाबों:


655

इन फ़ोल्डरों में से एक में एक खोल स्क्रिप्ट रखो: /etc/cron.daily, /etc/cron.hourly, /etc/cron.monthlyया /etc/cron.weekly

यदि ये आपके लिए पर्याप्त नहीं हैं, तो आप महीने में दो बार या हर 5 मिनट में अधिक विशिष्ट कार्य जोड़ सकते हैं। टर्मिनल पर जाएं और टाइप करें:

crontab -e

यह आपकी व्यक्तिगत crontab (क्रॉन कॉन्फ़िगरेशन फ़ाइल) को खोलेगा। उस फ़ाइल में पहली पंक्ति यह सब बताती है! प्रत्येक पंक्ति में आप चलाने के लिए एक कमांड और उसके शेड्यूल को परिभाषित कर सकते हैं, और जब आप इसे लटकाते हैं तो प्रारूप काफी सरल होता है। संरचना है:

minute hour day-of-month month day-of-week command

सभी नंबरों के लिए आप सूचियों का उपयोग कर सकते हैं, जैसे 5,34,55मिनटों में फ़ील्ड का अर्थ होगा 5 अतीत, 34 अतीत और 55 अतीत जो भी घंटे परिभाषित है, पर चलेगा।

आप अंतराल का उपयोग भी कर सकते हैं। उन्हें इस तरह परिभाषित किया गया है */20:। इस उदाहरण का अर्थ हर 20 वां है, इसलिए मिनट कॉलम में यह बराबर है 0,20,40

इसलिए हर सोमवार को शाम 5:30 बजे कमांड चलाने के लिए:

30 17 * * 1 /path/to/command

या हर 15 मिनट में

*/15 * * * * /path/to/command

ध्यान दें कि सप्ताह का दिन 0-6 से जाता है जहां 0 रविवार है।

आप यहाँ और पढ़ सकते हैं ।


7
ये सिस्टम-वाइड हैं और उच्च विशेषाधिकारों के साथ चलते हैं। जब तक पहुंच या अनुमति की जरूरत नहीं होगी, मैं वहां कुछ भी नहीं रखूंगा। अंगूठे के एक नियम के रूप में, क्षमताओं के बिना सामान करने की कोशिश करें। इसलिए, मुझे यह उत्तर बेहतर लगता है: ubuntu.stackexchange.com/questions/2368/how-do-i-setup-cron-job/…
H Marcelo Morales

5
@ मार्सेलो मोरालेस, जो दिए गए कमांड को रूट के रूप में भी चलाएगा! यदि आप दूसरी ओर sudo का उपयोग नहीं करते हैं, तो आप एक उपयोगकर्ता crontab बनाएंगे और इसे उस उपयोगकर्ता के रूप में चलाया जाएगा जिसने इसे बनाया है!
लाससेपुलसेन

4
* (15 * * * * / पाथ / टू / कमांड मेरे लिए बहुत काम की थी! धन्यवाद!
एंड्रयू ओडेन्दल

18
यह ध्यान देने योग्य है कि ये परिवर्तन स्वचालित रूप से लागू होते हैं, आपको कुछ भी पुनः आरंभ / पुनः लोड करने की आवश्यकता नहीं है।
मोलोमबी

6
एक और आसान टिप यह है कि इसके बजाय */15 * * * * /path/to/command, आप @reboot /path/to/commandस्टार्टअप पर कुछ निष्पादित करने के लिए कर सकते हैं ।
केनेथ वर्डेन

102

यदि आप जिस नौकरी को चलाना चाहते हैं, उसे उसी विशेषाधिकार के साथ चलाया जा सकता है, जैसा कि आपका उपयोगकर्ता मैं उपयोगकर्ता क्रॉस्टैब का उपयोग करने की सलाह देता है, जिसे आप चलाकर संपादित कर सकते हैं EDITOR="gedit" crontab -e(जो कि क्रेस्टैब फ़ाइल को संपादित करने के लिए गेडिट crontab -eका उपयोग करेगा ) या बस (जो डिफ़ॉल्ट संपादक का उपयोग करेगा) एक टर्मिनल में।

यदि आप हर 10 मिनट में कुछ चलाना चाहते हैं, उदाहरण के लिए, आप इस तरह से एक पंक्ति जोड़ते हैं

*/10 * * * * /usr/bin/somedirectory/somecommand

और फाइल को सेव करें।

आप के साथ उपयोगकर्ता crontab की सामग्री देख सकते हैं crontab -l

रूट के रूप में चलने वाली क्रोन जॉब को जोड़ने के लिए, आप रूट के क्रॉस्टैब को चलाकर संपादित कर सकते हैं sudo crontab -e

सबसे लचीला तरीका है सिस्टम क्रैस्टब का उपयोग करना /etc/crontabजिसे आप केवल रूट विशेषाधिकारों के साथ संपादित कर सकते हैं। इस फ़ाइल में, प्रत्येक कमांड को निर्दिष्ट के रूप में चलाया जाना है, इसलिए आप अपने कमांड को रूट के रूप में चला सकते हैं (यदि आपको उस स्तर के विशेषाधिकार की आवश्यकता है) या सिस्टम पर किसी अन्य उपयोगकर्ता को चला सकते हैं।

उदाहरण के लिए, यदि आप रूट के रूप में हर 10 मिनट में कुछ चलाना चाहते हैं, तो आप इस तरह एक पंक्ति जोड़ेंगे

*/10 * * * * root /usr/bin/somedirectory/somecommand

(लाइन के लिए उपयोगकर्ता के अलावा नोटिस)

आप सिस्टम crontab फ़ाइल की सामग्री को देख सकते हैं cat /etc/crontab

और अधिक विवरण: https://help.ubuntu.com/community/CronHowto


1
यहाँ एक मधुर संवादात्मक क्रोन मैनिपुलेटर है जो आपको क्रोन समय के लिए अंग्रेजी देगा crontab.guru
CTS_AE

52

यदि आप इसे GUI का उपयोग करना पसंद करते हैं, तो आप सॉफ़्टवेयर सेंटर पर जा सकते हैं और अनुसूचित कार्य (या रन sudo apt-get install gnome-schedule) स्थापित कर सकते हैं । यह क्रोन कार्यों को जोड़ने के लिए एक शक्तिशाली जीयूआई प्रदान करेगा।

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


3
के लिए उपलब्ध नहीं 16.04 जाहिरा तौर पर bugs.launchpad.net/ubuntu/+source/gnome-schedule/+bug/1576060
TankorSmash

@TankorSmash आप इसे यहाँ
एम।

पैकेज की आवश्यकताओं को 16.04
ओडीसियस इथाका

26

मैं केडीई के टास्क शेड्यूलर ( kde-config-cron) की सिफारिश करता हूं Kde-config-cron स्थापित करें। वहां टास्क शेड्यूलर मॉड्यूल में सिस्टम सेटिंग्स से इसे एक्सेस करें ।

यह व्यक्तिगत और सिस्टम Crontabs दोनों का प्रबंधन करता है, और समय सीमा बनाने में आसानी ने मुझे बहुत आश्चर्यचकित किया (नीचे स्क्रीनशॉट देखें)। मुझे लगता है कि यह हिस्सा वास्तव में कमतर है।

यहां छवि विवरण दर्ज करें


11

KDE टास्क शेड्यूलर नियमित उबंटू में काम नहीं करेगा। यह केवल KDE सिस्टम जैसे KUbuntu में काम करता है। गैर केडीई प्रणाली के लिए आप सूक्ति-अनुसूची का उपयोग करना पसंद करेंगे

$ sudo apt-get install gnome-schedule

एप्लिकेशन डैश में अनुसूचित कार्य है।


यह उबंटू 16.04
सैदबक्र

कृपया I can't install gnome schedule on Ubuntu 16.04@ askubuntu.com/questions/785657/… पर एक नज़र डालें । @ Bugs.launchpad.net/ubuntu/+source/gnome-schedule/+bug/1576060/… डाउनलोड करने के लिए एक पैकेज है । बस प्रदर्शन$ sudo dpkg -i gnome-schedule_2.3.0-0ubuntu16.04_amd64.deb
एंटोनियो

10

मैं एक बैश स्क्रिप्ट के माध्यम से चलाने के लिए एक क्रोन नौकरी सेट करना चाहता था, इसलिए स्क्रिप्ट को निष्पादित करने से क्रॉन नौकरी जुड़ जाएगी।

मुझे एहसास हुआ कि जब आप इसका उपयोग करते हैं:

crontab -e 

तब यह फ़ाइल बनाता है:

/var/spool/cron/crontabs/root

जहाँ root उस उपयोगकर्ता का नाम है जो crontab कमांड चला रहा है। तो इस पर आधारित और 14.04 में कम से कम, हम एक नई क्रॉन जॉब बनाने के लिए निम्नलिखित बैश कमांड निष्पादित कर सकते हैं:

echo "30 17 * * 1 /path/to/command" > /var/spool/cron/crontabs/root

हमें फ़ाइल के लिए सही स्वामित्व सेट करने की आवश्यकता है:

chown root:root /var/spool/cron/crontabs/root

और सही अनुमतियाँ सेट करें:

chmod 600 /var/spool/cron/crontabs/root

जब आप दौड़ते crontab -eहैं तो सूची में पहले से ही क्रॉन जॉब्स होते हैं, तो आप निम्नलिखित कमांड का उपयोग करके सूची में शामिल होने में सक्षम हैं:

echo "30 17 * * 1 /path/to/command" >> /var/spool/cron/crontabs/root

2

test_cron.shउबटन 18.04 पर हर मिनट क्रोन द्वारा स्क्रिप्ट चलाने का उदाहरण प्रतीकात्मक लिंक का उपयोग करके:

test_cron.sh फ़ाइल:

#!/bin/bash
echo "System backuped" >> /media/myname/data/backup/backup_tmp.log

यदि आप अपनी स्क्रिप्ट में पर्यावरण चर का उपयोग करना चाहते हैं जैसे $USERरास्तों में सटीक पथ लिखना बेहतर है, तो बैश निष्पादन के समय अपने चर नहीं जान पाएंगे।

myname उपयोगकर्ता नाम है (रूट समूह का हिस्सा, मुझे यकीन नहीं है कि रूट विशेषाधिकार आवश्यक हैं)।

उपयोगकर्ताओं को क्रॉन जॉब्स सेट करने की अनुमति दें, यदि आवश्यक हो तो फ़ाइल बनाई जाएगी:

sudo nano /etc/cron.allow

root
myname

स्क्रिप्ट का रास्ता है /home/myname/shell/test_cron.sh

मैंने मालिक को बदल दिया और इसे निष्पादन योग्य बना दिया:

sudo chown myname /home/myname/shell/test_cron.sh
chmod +x /home/myname/shell/test_cron.sh

मैंने प्रतीकात्मक लिंक जोड़ा:

sudo ln -s /home/myname/shell/test_cron.sh /usr/bin/test_cron

लॉग इन के रूप में mynameमैं निष्पादित करने के लिए नया कार्य जोड़ा test_cronहर मिनट।

crontab -e

*/1 * * * * test_cron

यह जाँचने के लिए कि सूची में कमांड:

crontab -l

*/1 * * * * test_cron

निष्पादन की जांच करने के लिए

grep -i cron /var/log/syslog

Nov 17 12:28:01 myname-ubuntu CRON[13947]: (myname) CMD (system-backup)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.