Job Scheduling commands (at, batch, crontab)

કેટલાંક કામ તમે ત્યાં બેઠા વગર જ ચાલવાં જોઈએ: at કોઈ command ને ભવિષ્યના સમયે એક વાર ચલાવે છે, batch એને system નવરું હોય ત્યારે ચલાવે છે, અને crontab પાંચ ખાનાં વડે ગોઠવેલા સમયપત્રક પ્રમાણે commands ને વારંવાર ચલાવે છે, એટલે કે મિનિટ, કલાક, દિવસ, મહિનો અને વાર.

11 min read · 8 cards · 2 checks

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


Theory

તમે ઊંઘતા હો ત્યારે ચાલતું કામ

તમે એવો script લખ્યો છે જે તમારા project ના folder નું backup લે છે. તમારે રોજ રાત્રે 2 વાગ્યે એને ચલાવવાનું યાદ રાખવું નથી; તમારે તો system જ એને તમારા વતી, આપોઆપ, સમયપત્રક પ્રમાણે ચલાવે એવું જોઈએ છે.

એ જ job scheduling છે. Linux તમને ત્રણ ઓજાર આપે છે: ભવિષ્યમાં એક જ વાર ચલાવવા માટે at, યંત્ર નવરું હોય ત્યારે ચલાવવા માટે batch, અને સમયપત્રક પ્રમાણે વારંવાર ચાલતાં કામ માટે crontab. વારંવાર ચાલતું ઓજાર, એટલે કે cron, જ ખરું ભારવાહક છે, અને એનું પાંચ ખાનાંનું સમયનું સ્વરૂપ જ અહીં શીખવાની મુખ્ય વાત છે.

At a glance

Commandએ કામ ક્યારે ચલાવે છે
at TIMEએક વાર, ભવિષ્યના જણાવેલા સમયે (દા.ત. at 2am)
batchએક વાર, જ્યારે system પરનો ભાર પૂરતો ઓછો હોય ત્યારે
crontab -eવારંવાર, તમે સંપાદિત કરેલા સમયપત્રક પ્રમાણે
crontab -l(તમારાં અત્યારનાં ગોઠવેલાં cron નાં કામોની યાદી આપે છે)

Theory

cron નાં પાંચ ખાનાં

cron નું સમયપત્રક એટલે સમયનાં પાંચ ખાનાં, ડાબેથી જમણે વંચાય, અને પછી command:

મિનિટ કલાક મહિનાનો દિવસ મહિનો અઠવાડિયાનો વાર command

  • મિનિટ: 0 થી 59
  • કલાક: 0 થી 23 (24 કલાકનું ઘડિયાળ)
  • મહિનાનો દિવસ: 1 થી 31
  • મહિનો: 1 થી 12
  • અઠવાડિયાનો વાર: 0 થી 6 (0 કે 7 એટલે રવિવાર, 1 એટલે સોમવાર)

કોઈ ખાનામાં *તારાચિહ્ન ``** હોય તો એનો અર્થ એ ખાનાની 'દરેક' કિંમત. એટલે તમે દરેક ખાનામાં બરાબર ક્યારે ચલાવવું એ કહીને સમયપત્રક બાંધો છો.

Practical

cron થી backup નો સમય ગોઠવવો

# 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

પાંચ ખાનાં ડાબેથી જમણે વાંચો

cron નું આખું કૌશલ્ય એ પાંચ ખાનાં ક્રમમાં વાંચવામાં જ છે: મિનિટ, કલાક, મહિનાનો દિવસ, મહિનો, અઠવાડિયાનો વાર. તારાચિહ્ન એટલે દરેક.

એટલે 30 6 * * 1 નો અર્થ થાય મિનિટ 30, કલાક 6, મહિનાનો ગમે તે દિવસ, ગમે તે મહિનો, અને વાર 1 (સોમવાર), એટલે કે દર સોમવારે 06:30 વાગ્યે. અને 0 0 * * * નો અર્થ થાય મિનિટ 0, કલાક 0, દરરોજ, એટલે કે દરરોજ મધરાતે. લીટીને સાદી ભાષામાં અને સાદી ભાષાને લીટીમાં ફેરવવાની ટેવ પાડો; પરીક્ષાના પ્રશ્નો અને ખરી ગોઠવણો બંને એ જ માંગે છે.

Quiz

કોઈ crontab માં આ લીટી છે: 0 22 * * 5 /home/riya/report.sh . report.sh ક્યારે ચાલશે?

  1. દરરોજ, દરેક કલાકની 22 મી મિનિટે
  2. દર શુક્રવારે 22:00 વાગ્યે (રાત્રે 10 વાગ્યે)
  3. દર મહિનાની 22 મી તારીખે
  4. દર 5 મિનિટે
Show the answer

દર શુક્રવારે 22:00 વાગ્યે (રાત્રે 10 વાગ્યે)

પાંચ ખાનાં ડાબેથી જમણે વાંચો: મિનિટ 0, કલાક 22, મહિનાનો દિવસ (ગમે તે), મહિનો (ગમે તે), અઠવાડિયાનો વાર 5. વાર 5 એટલે શુક્રવાર (0/7 એટલે રવિવાર, 1 એટલે સોમવાર, એટલે 5 એટલે શુક્રવાર). તેથી એ કલાક 22 અને મિનિટ 0 એ ચાલે છે, એટલે કે દર શુક્રવારે 22:00 વાગ્યે કે રાત્રે 10 વાગ્યે. વિકલ્પ A ખાનાં ખોટાં વાંચે છે: પહેલું ખાનું 0 એ મિનિટ છે અને 22 એ કલાક છે, જેમાંથી 22:00 મળે છે, નહીં કે 'દરેક કલાકની 22 મી મિનિટ'. વિકલ્પ C અઠવાડિયાના વાર (પાંચમું ખાનું) ને મહિનાના દિવસ (ત્રીજું ખાનું) સાથે ગૂંચવે છે; અહીંનો 22 એ કલાક છે અને 5 એ વાર છે. વિકલ્પ D 'દર 5 મિનિટે' એવો અર્થ ઉપજાવી કાઢે છે જે આ ખાનાં કહેતાં જ નથી. હંમેશા આ ક્રમમાં ઉકેલો: મિનિટ, કલાક, દિવસ, મહિનો, વાર.

Think first

cron ને બદલે at ક્યારે વાપરવો?

at અને cron બંને કામનો સમય ગોઠવે છે. કયું વાપરવું એ તમે કઈ રીતે નક્કી કરો? વિચારીને પછી tap કરો.

Show the answer

કામ ફરી ફરી થવાનું છે કે નહીં એના પરથી પસંદ કરો. એક જ વાર થનારા ભવિષ્યના કામ માટે at વાપરો, અને વારંવાર થનારા કામ માટે cron વાપરો. જો કંઈક પછીના કોઈ ચોક્કસ સમયે બરાબર એક જ વાર થવું જોઈએ, જેમ કે 'આજે રાત્રે 2 વાગ્યે આ સફાઈ ચલાવ' કે 'આવતા સોમવારે 9 વાગ્યે આ યાદ અપાવ', તો at બરાબર બંધબેસે છે: તમે એને એક જ સમય આપો છો, એ કામ એક વાર ચલાવે છે, અને વાત પૂરી. પણ જો કંઈક સમયપત્રક પ્રમાણે વારંવાર થવું જોઈએ, જેમ કે 'રોજ રાત્રે backup લે' કે 'દર શુક્રવારે રાત્રે 10 વાગ્યે report બનાવ', તો cron (crontab) જ ઓજાર છે, કારણ કે એ પાંચ ખાનાંથી વર્ણવેલા વારંવારના સમયપત્રક પ્રમાણે અનિશ્ચિત સમય સુધી ચાલતું રહે છે, જ્યાં સુધી તમે એને કાઢી ન નાખો. batch એ 'એક જ વાર' વાળા વિચારનો ખાસ પ્રકાર છે: એક વાર ચલાવવું, પણ નક્કી કરેલા સમયે નહીં, બલ્કે જ્યારે system કામમાં વ્યસ્ત ન હોય ત્યારે, જે એવા ભારે કામ માટે ઉપયોગી છે જેને તમે વપરાશકારો સાથે હરીફાઈમાં ઉતારવા માંગતા નથી. એટલે નિર્ણય સાવ સહેલો છે: સમયપત્રક પ્રમાણે વારંવાર થાય તો cron; નક્કી કરેલા સમયે એક વાર થાય તો at; યંત્ર નવરું પડે ત્યારે એક વાર થાય તો batch. કામની લયને અનુરૂપ ઓજાર પસંદ કરો.

Summary

Key takeaways

  • Job scheduling તમે હાજર ન હો તો પણ commands ને આપોઆપ ચલાવે છે.
  • at એ command ને ભવિષ્યના સમયે એક વાર ચલાવે છે; batch એને system પરનો ભાર ઓછો હોય ત્યારે એક વાર ચલાવે છે.
  • crontab વારંવાર ચાલતાં કામનો સમય ગોઠવે છે (સંપાદન માટે crontab -e, યાદી માટે crontab -l).
  • cron ની લીટીમાં સમયનાં પાંચ ખાનાં અને પછી command આવે છે: મિનિટ, કલાક, મહિનાનો દિવસ, મહિનો, અઠવાડિયાનો વાર.
  • તારાચિહ્ન * એટલે 'દરેક'; અઠવાડિયાના વારમાં 0 કે 7 એટલે રવિવાર, 1 એટલે સોમવાર, 5 એટલે શુક્રવાર.
  • દાખલો: 30 6 1 એ દર સોમવારે 06:30 વાગ્યે ચાલે છે; 0 0 * એ દરરોજ મધરાતે ચાલે છે.
  • યાદ રાખવાની કડી: વારંવાર એટલે cron (પાંચ ખાનાં), નક્કી સમયે એક વાર એટલે at, નવરાશે એક વાર એટલે 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