Automation

အချို့သော အခါများတွင် သင်သည် အလုပ်တစ်ခုခု လုပ်ဆောင်ပေးသည့် script တစ်ခုကို ရေးသားပြီး ၎င်းကို ပုံမှန် အချိန်ခြားပြီး (ဥပမာ- backup ပြုလုပ်သည့် လုပ်ဆောင်ချက်ကဲ့သို့) အလိုအလျောက် ပုံမှန် လည်ပတ်စေချင်ပေမည်။ နောက်ကွယ် (background) တွင် ပုံမှန် ပွင့်လာပြီး လည်ပတ်ပေးသည့် သီးသန့် အဆင်ပြေရာ ad hoc ဖြေရှင်းနည်းတစ်ခုကို ရေးသား၍လည်း ရနိုင်ပါသည်။ သို့သော်လည်း UNIX စနစ်အများစုတွင် ရိုးရှင်းသော စည်းမျဉ်းများအပေါ် အခြေခံ၍ အနည်းဆုံး တစ်မိနစ်လျှင် တစ်ကြိမ်အထိ လုပ်ဆောင်ချက်များကို ပုံမှန် လည်ပတ်ပေးနိုင်သည့် cron daemon ပါဝင်ပြီးသား ဖြစ်ပါသည်။

UNIX စနစ်အများစုတွင် cron daemon ဖြစ်သည့် crond သည် မူလအတိုင်း (by default) လည်ပတ်နေလေ့ရှိသော်လည်း ps aux | grep crond ကို အသုံးပြု၍ အမြဲတမ်း စစ်ဆေးကြည့်နိုင်ပါသည်။

crontab

cron အတွက် configuration ဖိုင်ကို crontab -l ဖြင့် ကြည့်ရှုနိုင်ပြီး crontab -e ဖြင့် ပြင်ဆင်နိုင်သည်။ cron အသုံးပြုသော အချိန်ပုံစံ (time format) တွင် space ဖြင့် ပိုင်းခြားထားသော ဖိန်း (field) ၅ ခု ပါဝင်ပြီး ယင်းနောက်တွင် user နှင့် command တို့ ပါဝင်သည်။

ကြယ်ပွင့် * ကို အသုံးပြုပါက “အားလုံး” ကို ဆိုလိုပြီး ကြယ်ပွင့်နောက်တွင် စလတ်ရှ် နှင့် ကိန်းဂဏန်း ယှဉ်တွဲသုံးပါက n ကြိမ်မြောက် တန်ဖိုးတိုင်းကို ဆိုလိုပါသည်။ ထို့ကြောင့် */5 ဆိုသည်မှာ ၅ ကြိမ်တိုင်းတွင် တစ်ကြိမ် ကို ဆိုလိုသည်။ ဥပမာအချို့မှာ-

*/5   *    *   *   *       # Every five minutes
  0   *    *   *   *       # Every hour at o'clock
  0   9    *   *   *       # Every day at 9:00 am
  0   9-17 *   *   *       # Every hour between 9:00am and 5:00pm
  0   0    *   *   5       # Every Friday at 12:00 am
  0   0    1   */2 *       # Every other month, the first day, 12:00am

အတွေ့ရများသော crontab ဇယားသတ်မှတ်ချက် နမူနာအမြောက်အမြားကို crontab.guru တွင် ပိုမို ရှာဖွေကြည့်ရှုနိုင်ပါသည်။

Shell ပတ်ဝန်းကျင် (environment) နှင့် မှတ်တမ်းတင်ခြင်း (logging)

cron ကို အသုံးပြုရာတွင် တွေ့ရလေ့ရှိသော အဓိက အမှားတစ်ခုမှာ ၎င်းသည် အသုံးများသော shell များကဲ့သို့ .bashrc၊ .zshrc အစရှိသည့် environment script များကို မူလအတိုင်း ရယူခြင်းမရှိဘဲ output များကိုလည်း မူလအတိုင်း မည်သည့်နေရာတွင်မှ မှတ်တမ်း (log) တင်ထားခြင်း မရှိခြင်းဖြစ်သည်။ အများဆုံး အကြိမ်ရေမှာ တစ်မိနစ်လျှင် တစ်ကြိမ်ဖြစ်ခြင်းနှင့် ပေါင်းစပ်လိုက်သည့်အခါ စတင် အသုံးပြုချိန်တွင် cronscript များကို debug ပြုလုပ်ရန် တော်တော်လေး အခက်တွေ့စေနိုင်ပါသည်။

environment ပြဿနာကို ဖြေရှင်းရန် သင်၏ script များအားလုံးတွင် တိကျသော လမ်းကြောင်း (absolute path) များကို သုံးစွဲရန် သေချာစေပြီး script ကို အောင်မြင်စွာ လည်ပတ်နိုင်ရန် PATH ကဲ့သို့သော environment variable များကို ပြင်ဆင်ပါ။ logging ပြုလုပ်ခြင်းကို လွယ်ကူစေရန်အတွက် သင်၏ crontab ကို အောက်ပါ ပုံစံအတိုင်း ရေးသားရန် အကြံပြုပါသည်။

* * * * *   user  /path/to/cronscripts/every_minute.sh >> /tmp/cron_every_minute.log 2>&1

ပြီးလျှင် script ကို သီးခြား ဖိုင်တစ်ခုတွင် ရေးသားပါ။ >> သည် ဖိုင်အဆုံးတွင် သွားရောက် ထည့်သွင်း (append) ပေးပြီး 2>&1 သည် stderr ကို stdout သို့ လမ်းကြောင်းပြောင်းပေးခြင်း (redirect) ဖြစ်ကြောင်း သတိရပါ (ယင်းတို့နှစ်ခုကို သီးခြားစီ ခွဲထားချင်ပါကလည်း ရပါသည်)။

Anacron

cron ကို အသုံးပြုရာတွင် သတိထားရန် အချက်တစ်ခုမှာ cron script လည်ပတ်ရမည့် အချိန်တွင် ကွန်ပျူတာ ပိတ်ထားပါက သို့မဟုတ် asleep ဖြစ်နေပါက script သည် လည်ပတ်မည် မဟုတ်ပေ။ မကြာခဏ လည်ပတ်သည့် လုပ်ဆောင်ချက်များအတွက် ၎င်းသည် အဆင်ပြေနိုင်သော်လည်း ခပ်ကျဲကျဲသာ လည်ပတ်သည့် လုပ်ဆောင်ချက်များအတွက်မူ ယင်းကို မပျက်မကွက် လည်ပတ်စေချင်ပေမည်။ anacron သည် အကြိမ်ရေကို နေ့ရက်များဖြင့် သတ်မှတ်သည်မှလွဲ၍ cron နှင့် သဘောတရား ဆင်တူပါသည်။ cron နှင့်မတူသည်မှာ ၎င်းသည် စက်ကို အစဉ်မပြတ် လည်ပတ်နေသည်ဟု မယူဆထားပါ။ ထို့ကြောင့် ၎င်းကို ၂၄ နာရီပတ်လုံး လည်ပတ်မနေသော စက်များတွင် နေ့စဉ်၊ အပတ်စဉ်၊ နှင့် လစဉ် လုပ်ဆောင်ချက်များကဲ့သို့ ပုံမှန် အလုပ်များကို စီမံခန့်ခွဲရန် အသုံးပြုနိုင်သည်။

လေ့ကျင့်ခန်းများ (Exercises)

  1. သင်၏ Downloads ဖိုဒါအတွင်းရှိ ဓာတ်ပုံဖိုင်များ ( MIME types ကို လေ့လာကြည့်ရှုနိုင်သည် သို့မဟုတ် အသုံးများသော extension များကို ကိုက်ညီစေရန် regular expression ကို အသုံးပြုနိုင်သည်) ကို တစ်မိနစ်လျှင် တစ်ကြိမ် စစ်ဆေးပြီး Pictures ဖိုဒါသို့ ရွှေ့ပြောင်းပေးသည့် script တစ်ခု ပြုလုပ်ပါ။

  2. သင်၏ စနစ်အတွင်း ခေတ်မမီတော့သော (outdated) package များကို အပတ်စဉ် စစ်ဆေးပြီး update ပြုလုပ်ရန် အကြောင်းကြားပေးသည့် သို့မဟုတ် အလိုအလျောက် update ပြုလုပ်ပေးသည့် cron script တစ်ခု ရေးသားပါ။


Edit this page.

Licensed under CC BY-NC-SA.