मैं एक कार्य को नियमित रूप से चलाने के लिए शेड्यूल करना चाहता हूं और सुना है कि क्रोन ऐसा करने का तरीका है।
मैं उबंटू में क्रोन नौकरियों को कैसे जोड़ूं?
मैं एक कार्य को नियमित रूप से चलाने के लिए शेड्यूल करना चाहता हूं और सुना है कि क्रोन ऐसा करने का तरीका है।
मैं उबंटू में क्रोन नौकरियों को कैसे जोड़ूं?
जवाबों:
इन फ़ोल्डरों में से एक में एक खोल स्क्रिप्ट रखो: /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 रविवार है।
आप यहाँ और पढ़ सकते हैं ।
*/15 * * * * /path/to/command
, आप @reboot /path/to/command
स्टार्टअप पर कुछ निष्पादित करने के लिए कर सकते हैं ।
यदि आप जिस नौकरी को चलाना चाहते हैं, उसे उसी विशेषाधिकार के साथ चलाया जा सकता है, जैसा कि आपका उपयोगकर्ता मैं उपयोगकर्ता क्रॉस्टैब का उपयोग करने की सलाह देता है, जिसे आप चलाकर संपादित कर सकते हैं 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
यदि आप इसे GUI का उपयोग करना पसंद करते हैं, तो आप सॉफ़्टवेयर सेंटर पर जा सकते हैं और अनुसूचित कार्य (या रन sudo apt-get install gnome-schedule
) स्थापित कर सकते हैं । यह क्रोन कार्यों को जोड़ने के लिए एक शक्तिशाली जीयूआई प्रदान करेगा।
ध्यान दें कि यदि आप इस पद्धति का उपयोग करते हैं, तो डिफ़ॉल्ट रूप से कार्यों को आपके स्वयं के उपयोगकर्ता के रूप में निष्पादित किया जाएगा, रूट के रूप में नहीं। यह आमतौर पर एक अच्छी बात है।
मैं केडीई के टास्क शेड्यूलर ( kde-config-cron
) की सिफारिश करता हूं । वहां टास्क शेड्यूलर मॉड्यूल में सिस्टम सेटिंग्स से इसे एक्सेस करें ।
यह व्यक्तिगत और सिस्टम Crontabs दोनों का प्रबंधन करता है, और समय सीमा बनाने में आसानी ने मुझे बहुत आश्चर्यचकित किया (नीचे स्क्रीनशॉट देखें)। मुझे लगता है कि यह हिस्सा वास्तव में कमतर है।
KDE टास्क शेड्यूलर नियमित उबंटू में काम नहीं करेगा। यह केवल KDE सिस्टम जैसे KUbuntu में काम करता है। गैर केडीई प्रणाली के लिए आप सूक्ति-अनुसूची का उपयोग करना पसंद करेंगे
$ sudo apt-get install gnome-schedule
एप्लिकेशन डैश में अनुसूचित कार्य है।
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
मैं एक बैश स्क्रिप्ट के माध्यम से चलाने के लिए एक क्रोन नौकरी सेट करना चाहता था, इसलिए स्क्रिप्ट को निष्पादित करने से क्रॉन नौकरी जुड़ जाएगी।
मुझे एहसास हुआ कि जब आप इसका उपयोग करते हैं:
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
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)