Job Scheduling commands (at, batch, crontab)

कुछ jobs आपके वहाँ बैठे बिना चलनी चाहिए: at एक command भविष्य में एक बार चलाता है, batch एक तब चलाता है जब system free हो, और crontab commands को एक timetable पर repeat करने के लिए schedule करता है जो पाँच fields से set होता है, minute, hour, day, month, weekday।

11 min read · 8 cards · 2 checks

Read in: English · हिन्दी · ગુજરાતી


Theory

Work जो आपके सोते हुए चलता है

आपने एक script लिखी जो आपका project folder backup करती है। आप हर रात 2am पर इसे चलाना याद नहीं रखना चाहते; आप चाहते हैं system यह आपके लिए automatically, schedule पर, चलाए।

यही job scheduling है। Linux आपको तीन tools देता है: एक one-off future run के लिए at, machine idle होने पर चलाने के लिए batch, और उन jobs के लिए crontab जो एक timetable पर repeat होते हैं। Recurring वाला, cron, workhorse है, और इसका five-field time format यहाँ सीखने वाली main चीज़ है।

At a glance

Commandयह Job कब चलाता है
at TIMEएक बार, एक specified future time पर (जैसे at 2am)
batchएक बार, जब भी system load काफ़ी low हो
crontab -eबार-बार, एक schedule पर जिसे आप edit करते हैं (timetable)
crontab -l(आपके current scheduled cron jobs list करता है)

Theory

पाँच Cron Fields

एक cron schedule पाँच time fields है, left से right पढ़ी जाती हुई, command के बाद:

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

  • minute: 0 से 59
  • hour: 0 से 23 (24-hour clock)
  • day-of-month: 1 से 31
  • month: 1 से 12
  • day-of-week: 0 से 6 (0 या 7 Sunday है, 1 Monday है)

एक field में एक *asterisk ``** का मतलब है उस field की 'हर' value। तो आप हर field में बताकर एक schedule build करते हैं, exactly कब fire करना है।

Practical

cron से Backup Schedule करना

# Edit your crontab:
$ crontab -e

# Add this line: run backup.sh at 06:30 every Monday
30 6 * * 1 /home/riya/backup.sh
#  |  | | | |
#  |  | | | +-- day-of-week: 1 = Monday
#  |  | | +---- month: * = every month
#  |  | +------ day-of-month: * = every day-of-month
#  |  +-------- hour: 6
#  +----------- minute: 30    ->  06:30

# Run every day at midnight instead:
0 0 * * * /home/riya/backup.sh

Formula

पाँच Fields को Left से Right पढ़िए

cron की पूरी skill उन पाँच fields को order में पढ़ना है: minute, hour, day-of-month, month, day-of-week। Star का मतलब है हर।

तो 30 6 * * 1 है minute 30, hour 6, कोई भी day-of-month, कोई भी month, weekday 1 (Monday), यह है 06:30 हर Monday। और 0 0 * * * है minute 0, hour 0, हर day, यह है हर दिन midnight। एक line को plain English में और वापस translate करने में comfortable होइए; यही exam questions और real setups दोनों पूछते हैं।

Quiz

एक crontab में यह line है: 0 22 * * 5 /home/riya/report.sh। report.sh कब चलता है?

  1. हर hour के 22 minutes बाद, हर दिन
  2. 22:00 (10 pm) पर हर Friday
  3. हर महीने की 22 तारीख़ को
  4. हर 5 minutes में
Show the answer

22:00 (10 pm) पर हर Friday

पाँच fields को left से right पढ़िए: minute 0, hour 22, day-of-month (कोई भी), month (कोई भी), day-of-week 5। Day-of-week 5 Friday है (0/7=Sunday, 1=Monday, तो 5=Friday)। तो यह hour 22 minute 0 पर चलता है, जो 22:00 या 10 pm है, हर Friday। Option A fields को misread करता है: पहला field 0 minute है और 22 hour है, 22:00 देते हुए, 'हर hour के 22 minutes बाद' नहीं। Option C day-of-week (field 5) को day-of-month (field 3) से confuse करता है; यहाँ 22 hour है, और 5 weekday है। Option D एक 'हर 5 minutes' meaning invent करता है जो fields express नहीं करते। हमेशा minute, hour, day, month, weekday उसी order में parse कीजिए।

Think first

आप cron की बजाय at कब इस्तेमाल करते हैं?

at और cron दोनों jobs schedule करते हैं। आप कैसे decide करते हैं किसकी तरफ़ reach करें? फिर tap कीजिए।

Show the answer

इससे choose कीजिए कि job repeat करता है या नहीं। एक ONE-OFF future job के लिए at इस्तेमाल कीजिए, और एक RECURRING वाली के लिए cron। अगर आपको exactly एक बार एक specific बाद वाले time पर कुछ होना चाहिए, 'आज रात 2am पर यह cleanup चलाओ', 'अगले Monday 9 बजे यह reminder भेजो', तो at perfect है: आप इसे एक single time देते हैं, यह job एक बार चलाता है, और यह ख़त्म हो जाता है। इसके बजाय अगर आपको एक timetable पर बार-बार कुछ होना चाहिए, 'हर रात backup करो', 'हर Friday 10pm पर एक report generate करो', तो cron (crontab) tool है, क्योंकि यह उस recurring schedule पर fire करता है जो पाँच fields describe करते हैं, indefinitely, जब तक आप इसे remove नहीं करते। batch one-off idea का एक special case है: एक बार चलो, पर एक fixed time पर नहीं, बल्कि जब भी system busy न हो, उस heavy work के लिए useful जो आप users के साथ compete नहीं कराना चाहते। तो decision tree simple है: schedule पर repeat होता है -> cron; एक set time पर एक बार होता है -> at; machine free होने पर एक बार होता है -> batch। Job के rhythm से tool match कीजिए।

Summary

Key takeaways

  • Job scheduling automatically commands चलाता है, आपके present हुए बिना।
  • at एक command भविष्य में एक बार चलाता है; batch इसे एक बार चलाता है जब system load low हो।
  • crontab recurring jobs schedule करता है (edit के लिए crontab -e, list के लिए crontab -l)।
  • एक cron line में पाँच time fields हैं फिर command: minute, hour, day-of-month, month, day-of-week।
  • एक asterisk * का मतलब है 'हर'; day-of-week 0 या 7 Sunday है, 1 Monday है, 5 Friday है।
  • Example: 30 6 1 हर Monday 06:30 पर चलता है; 0 0 * हर दिन midnight पर चलता है।
  • Memory hook: recurring -> cron (पाँच fields), एक time पर एक बार -> at, idle होने पर एक बार -> batch।

Study this properly

This page is the lesson to read. In Gri-Learn the same topic is a graded deck: the self-checks are scored and your weak topics are tracked. Free to start.

Start this topic

Already have an account? Sign in

More from Basic Linux Commands

Gri-Learn · syllabus-mapped B.C.A. lessons in English, Hindi and Gujarati

Job Scheduling commands (at, batch, crontab) · Linux Operating System (LOS) (Minor-04) · Gri-Learn