मैंने सुना है क्रॉस्टैब एक अच्छा विकल्प है, लेकिन मैं लाइन कैसे लिखूं और इसे सर्वर पर कहां डालूं?
मैंने सुना है क्रॉस्टैब एक अच्छा विकल्प है, लेकिन मैं लाइन कैसे लिखूं और इसे सर्वर पर कहां डालूं?
जवाबों:
यहाँ एक अच्छा ट्यूटोरियल है कि क्राउन्ट क्या है और इसे उबंटू पर कैसे उपयोग किया जाए। आपकी कोंट्रेब लाइन कुछ इस तरह दिखाई देगी:
00 00 * * * ruby path/to/your/script.rb
( 00 00
मध्यरात्रि - 0 मिनट और 0 घंटे इंगित करता है - और *
हर महीने के हर दिन का मतलब है।)
वाक्य - विन्यास: mm hh dd mt wd कमांड मिमी मिनट 0-59 एचएच घंटे 0-23 dd दिन 1-31 का mt महीने 1-12 सप्ताह 4-7 का दिन (रविवार = 0 या 7) कमांड: जो आप चलाना चाहते हैं सभी संख्यात्मक मानों को * से बदला जा सकता है जिसका अर्थ है सभी
/etc/crontab
(Ubuntu पर ) में अनुमति दी गई है , लेकिन जब आप चलाते हैं crontab -e
तो आप उपयोगकर्ता-विशिष्ट crontab का संपादन कर रहे हैं, जो इस कॉलम की अनुमति नहीं देता है। IIRC Ubuntu /etc/crontab
मैन्युअल रूप से बाहर निकलने को हतोत्साहित करता है क्योंकि यह अधिलेखित हो सकता है। यहां देखें: stackoverflow.com/questions/8475694/…
sudo crotab -u root -e
मैन पेज से
linux$ man -S 5 crontab
cron(8) examines cron entries once every minute.
The time and date fields are:
field allowed values
----- --------------
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names, see below)
day of week 0-7 (0 or 7 is Sun, or use names)
...
# run five minutes after midnight, every day
5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
...
यह विशेष "उपनाम" पर ध्यान देने के लिए अच्छा है जिसका उपयोग किया जा सकता है (मैन पेज में प्रलेखित), विशेष रूप से "@reboot" जिसका कोई समय और दिनांक विकल्प नहीं है।
# Run once after reboot.
@reboot /usr/local/sbin/run_only_once_after_reboot.sh
आप इस ट्रिक का उपयोग प्रति मिनट कई बार अपने क्रॉन जॉब को चलाने के लिए भी कर सकते हैं।
# Run every minute at 0, 20, and 40 second intervals
* * * * * sleep 00; /usr/local/sbin/run_3times_per_minute.sh
* * * * * sleep 20; /usr/local/sbin/run_3times_per_minute.sh
* * * * * sleep 40; /usr/local/sbin/run_3times_per_minute.sh
क्रॉन जॉब जोड़ने के लिए, आप तीन काम कर सकते हैं:
उपयोगकर्ता के क्रॉस्टेब पर एक कमांड जोड़ें, जैसा कि ऊपर दिखाया गया है (और क्रॉस्टैब, सेक्शन 5, मैन पेज से)।
crontab -e -u <username>
crontab -e
EDITOR
पर्यावरण चर के
साथ संपादक सेट कर सकते हैंenv EDITOR=nano crontab -e -u <username>
export EDITOR=vim
crontab -e
chmod a+x <file>
क्रोन जॉब के रूप में एक स्क्रिप्ट / प्रोग्राम बनाएं, और इसे सिस्टम की एनाक्रोन /etc/cron.*ly
निर्देशिकाओं में जोड़ें
chmod a+x /etc/cron.daily/script_runs_daily.sh
- इसे अमल में लाएंman anacron
chmod a+x <file>
/etc/crontab
या में कॉन्फ़िगर किए गए हैं/etc/anacrontab
एक निर्धारित समय पर चलाने के लिए/etc/anacrontab
, और cron.hourly को परिभाषित करते हैं/etc/cron.d/0hourly
या, एक में सिस्टम crontables बना सकते हैं /etc/cron.d
।
/etc/cron.d
को निष्पादन योग्य होने की आवश्यकता नहीं है।someuser
, और /bin/bash
शेल के उपयोग के रूप में मजबूर किया जाता है। File: /etc/cron.d/myapp-cron
# use /bin/bash to run commands, no matter what /etc/passwd says
SHELL=/bin/bash
# Execute a nightly (11:00pm) cron job to scrub application records
00 23 * * * someuser /opt/myapp/bin/scrubrecords.php
कभी-कभी आपको rvm के साथ crontab का उपयोग करके PATH और GEM_PATH को निर्दिष्ट करना होगा।
ऐशे ही:
# top of crontab file
PATH=/home/user_name/.rvm/gems/ruby-2.2.0/bin:/home/user_name/.rvm/gems/ruby-2.2.0@global/bin:/home/user_name/.rvm/rubies/ruby-2.2.$
GEM_PATH=/home/user_name/.rvm/gems/ruby-2.2.0:/home/user_name/.rvm/gems/ruby-2.2.0@global
# jobs
00 00 * * * ruby path/to/your/script.rb
00 */4 * * * ruby path/to/your/script2.rb
00 8,12,22 * * * ruby path/to/your/script3.rb
एक क्रोन नौकरी सेटअप करने के लिए त्वरित गाइड
एक नई टेक्स्ट फ़ाइल बनाएं, उदाहरण: mycronjobs.txt
प्रत्येक दैनिक कार्य (00:00, 03:45) के लिए, mycronjobs.txt में शेड्यूल लाइनों को सहेजें
00 00 * * * ruby path/to/your/script.rb
45 03 * * * path/to/your/script2.sh
क्रोन को नौकरियां भेजें (हर बार जब आप इसे चलाते हैं, क्रोन हटाता है जो संग्रहीत किया गया है और mycronjobs.txt में नई जानकारी के साथ अपडेट होता है )
crontab mycronjobs.txt
अतिरिक्त उपयोगी जानकारी
वर्तमान क्रोन नौकरियां देखें
crontab -l
सभी क्रोन नौकरियों को हटा दें
crontab -r
आप शेल स्क्रिप्ट को दो तरह से निष्पादित कर सकते हैं, या तो क्रोन जॉब का उपयोग करके या शेल स्क्रिप्ट लिखकर
मान लें कि आपका स्क्रिप्ट नाम "yourcript.sh" है
पहले स्क्रिप्ट की उपयोगकर्ता अनुमति की जांच करें। स्क्रिप्ट की उपयोगकर्ता अनुमति की जांच करने के लिए कमांड के नीचे का उपयोग करें
ll स्क्रिप्ट। श
यदि स्क्रिप्ट रूट में है, तो नीचे कमांड का उपयोग करें
सुडो क्रैताब-ई
दूसरा यदि स्क्रिप्ट उपयोगकर्ता "ubuntu" को रखती है, तो नीचे कमांड का उपयोग करें
Crontab -e
अपने crontab में निम्न पंक्ति जोड़ें: -
५५ २३ * * * * /पथ / //yourscript.sh
ऐसा करने का एक और तरीका यह है कि आप एक स्क्रिप्ट लिखें और उसे बैकग्राउड में चलाएं
यहाँ वह स्क्रिप्ट है जहाँ आपको अपना स्क्रिप्ट नाम डालना है (जैसे: - youscript.sh) जो प्रतिदिन 23:55 बजे चलने वाली है
#!/bin/bash
while true
do
/home/modassir/yourscript.sh
sleep 1d
done
इसे एक फ़ाइल में सहेजें (इसे "every-day.sh" नाम दें)
नींद 1d - इसका मतलब है कि यह एक दिन तक इंतजार करता है और फिर फिर से चलता है।
अब अपनी script.use को कमांड के नीचे अनुमति दें: -
chmod + x हर- day.sh
अब, "शेलहॉप" का उपयोग करके इस शेल स्क्रिप्ट को पृष्ठभूमि में निष्पादित करें। यह आपके सत्र से लॉगआउट करने के बाद भी स्क्रिप्ट को निष्पादित करता रहेगा।
स्क्रिप्ट निष्पादित करने के लिए कमांड का उपयोग करें।
nohup ./every-day.sh &
नोट: - प्रतिदिन 23:55 बजे "yourcript.sh" को चलाने के लिए, आपको रात के 23:55 बजे "every-day.sh" स्क्रिप्ट निष्पादित करनी होगी।