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 တို့ ပါဝင်သည်။
- minute - command စတင် လည်ပတ်ရမည့် မိနစ် ဖြစ်ပြီး ‘0’ နှင့် ‘59’ ကြား သတ်မှတ်ရသည်။
- hour - command စတင် လည်ပတ်ရမည့် နာရီ ဖြစ်ပြီး ၂၄ နာရီ စနစ်ဖြင့် သတ်မှတ်ရသည်၊ တန်ဖိုးများမှာ 0 မှ 23 ကြား ဖြစ်ရမည် (0 သည် သန်းခေါင်ယံ ဖြစ်သည်)။
- dom - ၎င်းသည် Day of Month (လ၏ ရက်စွဲ) ဖြစ်ပြီး command ကို လည်ပတ်စေချင်သည့် ရက်ဖြစ်သည်၊ ဥပမာ- လစဉ် ၁၉ ရက်နေ့တွင် command လည်ပတ်စေချင်ပါက dom သည် 19 ဖြစ်မည်။
- month - command လည်ပတ်မည့် လဖြစ်ပြီး ကိန်းဂဏန်း (0-12) ဖြင့်ဖြစ်စေ သို့မဟုတ် လအမည် (ဥပမာ- May) ဖြင့်ဖြစ်စေ သတ်မှတ်နိုင်သည်။
- dow - ၎င်းသည် Day of Week (တစ်ပတ်၏ နေ့ရက်) ဖြစ်ပြီး command ကို လည်ပတ်စေချင်သည့် နေ့ဖြစ်သည်၊ ကိန်းဂဏန်း (0-7) ဖြင့်ဖြစ်စေ သို့မဟုတ် နေ့အမည် (ဥပမာ- sun) ဖြင့်ဖြစ်စေ သတ်မှတ်နိုင်သည်။
- user - command ကို လည်ပတ်စေသည့် user ဖြစ်သည်။
- command - လည်ပတ်စေချင်သည့် command ဖြစ်သည်။ ဤနေရာတွင် စကားလုံး အများအပြား သို့မဟုတ် space များ ပါဝင်နိုင်သည်။
ကြယ်ပွင့် * ကို အသုံးပြုပါက “အားလုံး” ကို ဆိုလိုပြီး ကြယ်ပွင့်နောက်တွင် စလတ်ရှ် နှင့် ကိန်းဂဏန်း ယှဉ်တွဲသုံးပါက 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)
-
သင်၏ Downloads ဖိုဒါအတွင်းရှိ ဓာတ်ပုံဖိုင်များ ( MIME types ကို လေ့လာကြည့်ရှုနိုင်သည် သို့မဟုတ် အသုံးများသော extension များကို ကိုက်ညီစေရန် regular expression ကို အသုံးပြုနိုင်သည်) ကို တစ်မိနစ်လျှင် တစ်ကြိမ် စစ်ဆေးပြီး Pictures ဖိုဒါသို့ ရွှေ့ပြောင်းပေးသည့် script တစ်ခု ပြုလုပ်ပါ။
-
သင်၏ စနစ်အတွင်း ခေတ်မမီတော့သော (outdated) package များကို အပတ်စဉ် စစ်ဆေးပြီး update ပြုလုပ်ရန် အကြောင်းကြားပေးသည့် သို့မဟုတ် အလိုအလျောက် update ပြုလုပ်ပေးသည့် cron script တစ်ခု ရေးသားပါ။
Licensed under CC BY-NC-SA.