मैं नियमित आधार पर चलाने के लिए एक कार्य शेड्यूल करना चाहता हूं और सुना है कि क्रॉन ऐसा करने का तरीका है ।
मैं उबंटू में क्रॉन जॉब्स कैसे जोड़ूं?
मैं नियमित आधार पर चलाने के लिए एक कार्य शेड्यूल करना चाहता हूं और सुना है कि क्रॉन ऐसा करने का तरीका है ।
मैं उबंटू में क्रॉन जॉब्स कैसे जोड़ूं?
इनमें से किसी एक फ़ोल्डर में शेल स्क्रिप्ट डालें: /etc/cron.daily
, /etc/cron.hourly
, /etc/cron.monthly
या /etc/cron.weekly
.
यदि ये आपके लिए पर्याप्त नहीं हैं, तो आप अधिक विशिष्ट कार्य जोड़ सकते हैं जैसे महीने में दो बार या हर 5 मिनट में । टर्मिनल पर जाएं और टाइप करें:
crontab -e
यह आपकी व्यक्तिगत क्रोनटैब (क्रॉन कॉन्फ़िगरेशन फ़ाइल) खोलेगा । उस फ़ाइल में पहली पंक्ति यह सब बताती है! प्रत्येक पंक्ति में आप चलाने के लिए एक कमांड और उसके शेड्यूल को परिभाषित कर सकते हैं, और जब आप इसे लटकाते हैं तो प्रारूप काफी सरल होता है । संरचना है:
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 रविवार है ।
आप और अधिक पढ़ सकते हैं यहाँ.
यदि आप जिस नौकरी को चलाना चाहते हैं, उसे आपके उपयोगकर्ता के समान विशेषाधिकारों के साथ चलाया जा सकता है, तो मैं एक उपयोगकर्ता क्रोंटैब का उपयोग करने की सलाह देता हूं जिसे आप चलाकर संपादित कर सकते हैं EDITOR="gedit" crontab -e
(जो क्रोनटैब फ़ाइल को संपादित करने के लिए जीएडिट का उपयोग करेगा) या बस crontab -e
(जो एक टर्मिनल में डिफ़ॉल्ट संपादक का उपयोग करेगा) ।
अगर आप हर 10 मिनट में कुछ चलाना चाहते हैं, उदाहरण के लिए, आप इस तरह एक लाइन जोड़ते हैं
*/10 * * * * /usr/bin/somedirectory/somecommand
और फाइल को सेव करें ।
आप उपयोगकर्ता क्रोनटैब की सामग्री को देख सकते हैं crontab -l
.
रूट के रूप में चलने वाली क्रॉन नौकरी जोड़ने के लिए, आप रूट के क्रोंटैब को चलाकर संपादित कर सकते हैं sudo crontab -e
.
सबसे लचीला तरीका सिस्टम क्रोनटैब का उपयोग करना है /etc/crontab
जिसे आप केवल रूट विशेषाधिकारों के साथ संपादित कर सकते हैं । इस फ़ाइल में, उपयोगकर्ता को प्रत्येक कमांड को निर्दिष्ट के रूप में चलाया जाना है, ताकि आप अपने कमांड को रूट के रूप में चला सकें (यदि आपको उस स्तर के विशेषाधिकार की आवश्यकता है) या सिस्टम पर कोई अन्य उपयोगकर्ता ।
उदाहरण के लिए, यदि आप रूट के रूप में हर 10 मिनट में कुछ चलाना चाहते हैं, तो आप इस तरह एक लाइन जोड़ देंगे
*/10 * * * * root /usr/bin/somedirectory/somecommand
(लाइन के लिए उपयोगकर्ता के अलावा नोटिस)
आप सिस्टम क्रोंटैब फ़ाइल की सामग्री को देख सकते हैं cat /etc/crontab
.
पर अधिक जानकारी: https://help.ubuntu.com/community/CronHowto
यदि आप इसे जीयूआई का उपयोग करके करना पसंद करते हैं, तो आप सॉफ्टवेयर सेंटर में जाकर इंस्टॉल कर सकते हैं अनुसूचित कार्य (या भागो sudo apt-get install gnome-schedule
). यह क्रॉन कार्यों को जोड़ने के लिए एक शक्तिशाली जीयूआई प्रदान करेगा ।
ध्यान दें कि यदि आप इस विधि का उपयोग करते हैं, तो डिफ़ॉल्ट रूप से कार्य आपके स्वयं के उपयोगकर्ता के रूप में निष्पादित किए जाएंगे, रूट के रूप में नहीं । यह आमतौर पर एक अच्छी बात है ।
मैं अनुशंसा करता हूं केडीई का कार्य अनुसूचक (kde-config-cron
) . इसे से एक्सेस करें सिस्टम सेटिंग्स में टास्क शेड्यूलर वहाँ मॉड्यूल.
यह व्यक्तिगत और सिस्टम क्रोनटैब्स दोनों का प्रबंधन करता है, और समय सीमाओं को बनाने में आसानी ने मुझे बहुत आश्चर्यचकित किया (नीचे स्क्रीनशॉट देखें) । मुझे लगता है कि यह हिस्सा वास्तव में कम आंका गया है ।
केडीई टास्क शेड्यूलर नियमित उबंटू में काम नहीं करेगा । यह केवल कुबंटू जैसे केडीई सिस्टम में काम करता है । गैर केडीई प्रणाली के लिए आप सूक्ति-अनुसूची का उपयोग करना पसंद करेंगे
$ sudo apt-get install gnome-schedule
ऐप डैश में निर्धारित कार्य है ।
मैं बैश स्क्रिप्ट के माध्यम से चलाने के लिए क्रॉन जॉब सेट करना चाहता था, इसलिए स्क्रिप्ट को निष्पादित करने से क्रॉन जॉब जुड़ जाएगा ।
मुझे एहसास हुआ कि जब आप का उपयोग करना:
crontab -e
फिर यह फ़ाइल बनाता है:
/var/spool/cron/crontabs/root
जहां रूट क्रोंटैब कमांड चलाने वाले उपयोगकर्ता का नाम है । तो इसके आधार पर और कम से कम 14.04 में, हम एक नया क्रॉन जॉब बनाने के लिए निम्नलिखित बैश कमांड निष्पादित कर सकते हैं:
echo "30 17 * * 1 /path/to/command" > /var/spool/cron/crontabs/root
हमें फ़ाइल के लिए सही स्वामित्व सेट करने की भी आवश्यकता है:
chown root:root /var/spool/cron/crontabs/root
और सेट सही permissions:
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/bashecho "System backuped" >> /media/myname/data/backup/backup_tmp.log
यदि आप अपनी स्क्रिप्ट में पर्यावरण चर का उपयोग करना चाहते हैं जैसे $USER
पथों में सटीक पथ टाइप करना बेहतर होता है, बैश निष्पादन समय पर आपके चर को नहीं जान पाएगा ।
myname
उपयोगकर्ता नाम है (रूट समूह का हिस्सा, मुझे यकीन नहीं है कि रूट विशेषाधिकार आवश्यक हैं) ।
उपयोगकर्ताओं को क्रॉन जॉब सेट करने की अनुमति दें, यदि आवश्यक हो तो फ़ाइल बनाई जाएगी:
sudo nano /etc/cron.allowrootmyname
स्क्रिप्ट का पथ है /home/myname/shell/test_cron.sh
मैंने मालिक को बदल दिया और इसे निष्पादन योग्य बना दिया:
sudo chown myname /home/myname/shell/test_cron.shchmod +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/syslogNov 17 12:28:01 myname-ubuntu CRON[13947]: (myname) CMD (system-backup)
आप पर विचार एकाधिक क्रॉन नौकरियां विशेष उपयोगकर्ता के साथ और वे एक ही शेड्यूल साझा नहीं करते हैं । आप बस सरल फ़ाइल बना सकते हैं /etc/cron.d/
कहते हैं कि फ़ाइल का नाम है myjobs
फिर बस उस फ़ाइल में अपने सभी शेड्यूलर लिखें और फिर निम्न आदेश चलाएं ।
crontab -u <username> /etc/cron.d/myjobs