System

What is GNU/Linux?

အားလုံးပဲ မင်္ဂလာပါ ခင်ဗျ။
ကျွန်တော်ကတော့ Spiceworks Myanmar မှာ Junior Backend Developer အဖြစ်ဝင်ရောက်လုပ်ကိုင်နေတဲ့ မောင်ဝေလျံပြည့် ဖြစ်ပါတယ်ခင်ဗျ။

ကျွန်တော်အခုမျှဝေသွားမယ့် အကြောင်းအရာလေးကတော့ GNU/Linux ပါခင်ဗျ။ Linux ကို ကျွန်တော်တို့ Developer တွေတော်တော်များများ သိကြမယ်လို့ထင်တယ်ဗျ။ Linux ဆိုတာကတော့ Operating System တစ်ခုမဟုတ်ဘဲ Kernel ဖြစ်တယ်။ Kernel ဆိုတာကတော့ Opreating System တစ်ခုရဲ့အဓိကကျတဲ့ လုပ်ဆောင်ချက်တွေကို လုပ်ဆောင်ပေးတာပါ။ ဘာလို့အဓိကကျတာလဲဆိုတော့ သူက System တစ်ခုလုံးကို ထိန်းချုပ်နိုင်တာကြောင့်ပါ။ ဘာလို့လဲဆိုတော့ ကျွန်တော်တို့ Operating System တစ်ခုကို စပြီးဖွင့်လိုက်တာနဲ့ Bootloader ပြီးရင် Kernel ကပထမဦးဆုံး စပြီးအလုပ်လုပ်တဲ့ Program တစ်ခုဖြစ်ပါတယ်။ ပြီးတော့ Kernel ကပဲ အသုံးပြုနေတဲ့ Operating System အတွက် လိုအပ်တာတွေကို ဆက်ပြီးလုပ်ဆောင်ပေးတာပါ။ Kernel ရဲ့လုပ်ဆောင်ချက်တွေကတော့  Access Computer Resource, Resource Management, Memory Management နှင့် Device Management စတာတွေကိုလုပ်ဆောင်ပေးပြီး အသုံးပြုသူနဲ့ Hardware တွေကြားမှာ ဆက်သွယ်မှုပြုလုပ်ပေးတာပါ။

ဒါဆို Linux ကို GNU Opreating System နှင့်တွဲဖက်ပြီး အသုံးပြုလိုက်တဲ့အခါမှာ GNU/Linux ဆိုပြီး ဖြစ်လာတာပါ။ ခုကျွန်တော်တို့ အသုံးပြုနေတဲ့ Linux Distributions တွေကလည်း တကယ်တော့ GNU/Linux ဖြစ်ပါတယ်။ Linux တစ်ခုတည်းဖြင့်ဆိုရင် အသုံးမဝင်နိုင်သလို သူ့ကို Operating System တစ်ခုခုနှင့် တွဲဖက်ပြီးသုံးမှသာလျှင် Linux(Unix-like Kernel) ဟာ သူ့ရဲ့လုပ်ဆောင်ချက်ကို ကောင်းကောင်းလုပ်ဆောင်နိုင်တာဖြစ်ပါတယ်။ ဒါဆို GNU ဆိုတာကရောဘာလဲ? GNU ဆိုကတော့ Operating System တစ်ခုဖြစ်ပြီးတော့ သူ့ကို “GNU is Not Unix” ဆိုပြီးသုံးပါတယ်။ ပြီးတော့သူက Free Software တစ်ခုဖြစ်ပါတယ်။ Free Software ဆိုတဲ့နေရာမှာလည်း ငွေကြေးပမာဏကို ဆိုလိုတာမဟုတ်ဘဲ အသုံးပြုသူရဲ့ လွတ်လပ်ခွင့်ကို ရည်ညွှန်းတာဖြစ်ပါတယ်။

ဒါဆို အခုကျွန်တော် GNU/Linux Distros တွေမှာအသုံးဝင်တဲ့ Commands လေးတွေကိုမျှဝေပေးမယ်ဗျ။ ကျွန်တော်အခုမျှဝေသွားမယ့် commands တွေကတော့ File Management, Detecting Linux Distribution Name and Version, Checking Disk Space, Getting System Information နှင့် Package Managers တွေဖြစ်ပါတယ်။ ဒီ commands တွေက Bash(Bourne Again SHell) တွေမှာအလုပ်ဖြစ်မှာဖြစ်ပြီး GNU/Linux Distros တော်တော်များများမှာလည်း Bash က default အနေနဲ့ဖြစ်နေမှာပါ။ ပထမဦးဆုံးအနေနှင့် Terminal ကို ခေါ်ချင်ရင် Ctrl + Alt + T ဆိုပြီး Keyboard မှာနှိပ်ရပါမယ် (ဒါက GNU/Linux Distros တော်တော်များများမှာရပါတယ်)။ Terminal ကိုသုံးပြီဆိုတော့ Mouse ကို သိပ်မသုံးဖြစ်တာကြောင့် Cursor Movement တွေရဲ့ shortcuts တွေကိုပြောပြပေးမှာဖြစ်ပါတယ်။ Ctrl + A ဆိုရင် ကျွန်တော်တို့ လက်ရှိရောက်နေတဲ့ command ရဲ့ ရှေ့ဆုံးကိုသွားနိုင်မှာဖြစ်ပြီး Ctrl + E ကတော့ နောက်ဆုံးကိုသွားချင်ရင်သုံးပါတယ်။ Ctrl + F ကတော့ command တစ်ခုရေးနေရင်း cursor ကို character တစ်လုံးချင်းရဲ့ အရှေ့ကိုသွားနိုင်မှာဖြစ်ပြီး Ctrl + B ဆိုရင်တော့ character တစ်လုံးချင်းရဲ့ နောက်ကိုသွားနိုင်မှာဖြစ်ပါတယ်။ Ctrl + H ဆိုရင်တော့ လုပ်ဆောင်ချက်က Backspace နဲ့အတူတူပါပဲ။ ကိုယ်လုပ်ဆောင်နေတဲ့ command တစ်ခုကိုရပ်တန့်ချင်ရင်တော့ Ctrl + C ကိုသုံးလို့ရပါတယ်။ Terminal မှာ command တွေများလာပြီးနည်းနည်းရှုပ်လာပြီဆိုရင် Ctrl + L ကို အသုံးပြုပြီး Terminal Screen ကိုရှင်းနိုင်မှာဖြစ်ပါတယ်။ Ctrl + Shift + Q ဆိုရင်တော့ Terminal တစ်ခုလုံးပိတ်သွားမှာဖြစ်ပြီး Ctrl + Shift + W ဆိုရင်တော့ Terminal Tab တစ်ခုပိတ်သွားမှာဖြစ်ပါတယ်။

Command ဆိုတာကတော့ကျွန်တော်တို့ Computer ကိုတစ်ခုခုခိုင်းချင်တဲ့အခါမှာ  သုံးတာဖြစ်ပြီး သူ့မှာ  [options] [arguments] ဆိုပြီးပါဝင်မှာဖြစ်ပါတယ်။ ဒါဆိုကျွန်တော်တို့ File Management တွေလုပ်ဆောင်ဖို့ဘယ်လို Commands တွေကိုအသုံးပြုပြီးလုပ်ဆောင်နိုင်တယ်ဆိုတာကို ကြည့်ရအောင်ဗျ။ ကျွန်တော်တို့ Terminal ကိုဖွင့်လိုက်ပြီဆိုရင် ကိုယ်ရောက်နေတဲ့ လက်ရှိလမ်းကြောင်းကို သိချင်တယ်ဆိုရင် pwd ဆိုပြီး ရိုက်လိုက်ရင် လက်ရှိရောက်နေတဲ့ လမ်းကြောင်းကိုပြပေးမှာဖြစ်တယ်။ ကိုယ်ရောက်နေတဲ့လမ်းကြောင်းမှာရှိတဲ့ Directory ကနေ နောက်ထပ်လမ်းကြောင်းတစ်ခုကို ပြောင်းချင်တဲ့အခါ cd ဆိုတဲ့ command ကိုသုံးရမယ်ဗျ။ အဲ့ဒီမှာ cd ~ လို့ရိုက်မယ်ဆိုရင် home directory ကိုရောက်သွားမှာဖြစ်ပြီး cd .. ဆိုရင်တော့ လက်ရှိရောက်နေတဲ့ directory ရဲ့ parent directory ကိုရောက်သွားမှာဖြစ်ပါတယ်။ Path (လမ်းကြောင်း) မှာ Relative Path နှင့် Absolute Path ဆိုပြီးနှစ်မျိုးရှိတယ်။ Relative Path ဆိုတာကတော့ ကိုယ်လက်ရှိရောက်နေတဲ့ Path နဲ့ဆိုင်တဲ့လမ်းကြောင်းနောက်လမ်း‌ကြောင်းကို ပြောင်းချင်တဲ့အခါသုံးတယ်။ Absolute Path ဆိုတာကတော့ ကျွန်တော်တို့သွားချင်တဲ့ လမ်းကြောင်းကို အတိအကျသိပြီး အဲ့လမ်းကြောင်းကိုတစ်ခါတည်းသွားချင်ရင် အသုံးပြုတယ်။ နောက် command တစ်ခုကတော့ ls ဆိုတာပဲဖြစ်ပါတယ်။ သူ့ရဲ့လုပ်ဆောင်ချက်ကတော့ ကိုယ်လက်ရှိရောက်နေတဲ့ Directory ထဲမှာရှိတဲ့ directories တွေကိုဖေါ်ပြပေးတာဖြစ်ပြီး default အနေနှင့်ကတော့ Hidden Files တွေကိုတွေ့ရမှာမဟုတ်ပါဘူး။ လက်ရှိ Directory မှာရှိတဲ့ အချက်အလက်အားလုံးကို ဖေါ်ပြစေချင်ရင် ls -a (သို့) ls -all ဆိုပြီးရိုက်လိုက်ရင်တွေ့နိုင်မှာဖြစ်ပါတယ်။ ဒီရောက်နေတယ့် Directory ထဲကအချက်အလက်တွေကို ဘယ်ဟာက files လဲ folders လဲဆိုတာကို ခွဲခြားချင်တဲ့အခါမှာ ls -F ဆိုပြီးရိုက်လိုက်ရင် သူ့ရဲ့သက်ဆိုင်ရာ အမျိုးအစားအလိုက်ဖေါ်ပြပေးပြီး ကျလာတဲ့အချက်အလက်တွေရဲ့ နောက်မှာ symbol အပိုလေးတွေပါနေမှာဖြစ်ပါတယ်။ အဲ့ဒီ symbol လေးတွေရဲ့ ဆိုလိုရင်းကတော့ * ဆိုတာ executable ဖြစ်ပြီး / ဆိုတာကတော့ directory တစ်ခုကိုဆိုလိုတာပါ။ @ ဆိုတာကတော့ symbolic link ကိုဆိုလိုတာဖြစ်ပါတယ်။ လက်ရှိရောက်နေတဲ့ Directory ထဲကအချက်အလက်တွေရဲ့ အသေးစိတ်ကို သိချင်ရင် ls -l ဆိုတဲ့ command ကိုအသုံးပြုနိုင်ပြီးအချက်အလက်တွေရဲ့ permission တွေ၊ total size တွေ၊ Owner’s name တွေ၊ Group တွေ၊ Timestamp တွေ၊ File Name တွေကိုမြင်နိုင်မှာဖြစ်ပါတယ်။ အဲ့ဒီ ls -l ကိုမှ h လေးပေါင်းလိုက်ရင် (ls -lh) ကျွန်တော်တို့အလွယ်တကူဖတ်နိုင်တဲ့ file size ကိုမြင်နိုင်မှာဖြစ်ပါတယ်။ နောက် ls -lt ဆိုတာကတော့ ကျွန်တော်တို့ file တွေကိုနောက်ဆုံးပြောင်းလဲခဲ့တဲ့  အချိန်ကိုမူတည်ပြီး ဖေါ်ပြပေးတာဖြစ်ပါတယ်။ ဒီ ls -lR ဆိုတာကတော့ directory ထဲမှာရှိတဲ့ subdirectories တွေကိုဖေါ်ပြပေးတာဖြစ်ပါတယ်။ နောက်ထပ်အသုံးဝင်တဲ့ command ကတော့ file တွေကို နာမည်ပြောင်းချင်တဲ့အခါ mv current_name new_name ဆိုပြီးအသုံးပြုပြောင်းလဲနိုင်ပါတယ်။ ကျွန်တော်တို့ directory တစ်ခုကိုတည်ဆောက်ချင်တဲ့အခါ mkdir dir_name ဆိုပြီးရိုက်လိုက်တာနဲ့ တည်ဆောက်ပေးပါတယ်။ တည်ဆောက်ထားတဲ့ directory ကို ဖျက်ချင်ရင်တော့ rmdir dir_name ဆိုပြီးသုံးရပါမယ်။ ဒါပေမယ့်ကိုယ်ဖျက်မယ့် directory က အလွတ်ဖြစ်နေမှသာ အဲ့ဒီ command ကိုသုံးနိုင်တာဖြစ်ပါတယ်။ တကယ်လို့ကိုယ်က directory အလွတ်မဟုတ်တာတွေကို ဖျက်ချင်တယ်ဆိုရင် rm -rf dir_name ဆိုပြီးအသုံးပြုပြီးဖျက်လို့ရပါတယ်။ နောက်တစ်ခုကတော့ touch ဆိုတဲ့ command ပါ။ သူ့ကို file  အသစ်လုပ်ချင်တဲ့အခါမှာ အသုံးပြုပြီး ရှိနေတဲ့ file ဖြစ်နေရင်တော့ သူ့ရဲ့နောက်ဆုံးပြင်ဆင်ထားတဲ့အချိန်ကို ပြောင်းလဲပေးမှာဖြစ်ပါတယ်။ နောက်ထပ်အသုံးဝင်တဲ့ command လေးကတော့ man ဆိုပဲဖြစ်ပါတယ်။ သူက ကိုယ်သိချင်တဲ့ command ကို အသုံးပြုပုံလမ်းညွှန်လို ပြသပေးတာဖြစ်ပါတယ်။ ဥပမာ- man ls ဆိုပြီးရိုက်လိုက်ရင် ls နှင့်ပတ်သက်ပြီး အသုံးပြုပုံတွေကိုတွေ့မြင်နိုင်မှာပါ။

နောက်တစ်ခုအနေနဲ့ကတော့ Detecting Linux Distributions ပါ။ ကျွန်တော်တို့ အသုံးပြုနေတဲ့ Linux ရဲ့ Distribution ကိုသိချင်ရင် lsb_release -b (သို့) cat /etc/issue ဆိုပြီးရိုက်လိုက်ရင် မြင်ရမှာဖြစ်ပါတယ်။ နောက်တစ်ခုကတော့ uname ဆိုတဲ့ command ပါ ဆိုလိုတာကတော့ unix-name ပါ။ ဒီ uname ဆိုတာကို system ရဲ့အချက်အလက်တွေကိုသိချင်တဲ့အခါမှာ သုံးနိုင်တယ်။ ဥပမာ- uname -a ဆိုရင် system နှင့်ပတ်သက်တဲ့ အချက်အလက်တွေကိုဖေါ်ပြပေးတာဖြစ်ပါတယ်။

နောက်တစ်ခုမျှဝေမှာကတော့ Checking Disk Space ပါ။ Commands တွေသုံးပြီး ကိုယ်ရဲ့Directories တွေ files တွေက Storage Device ထဲမှာဘယ်လောက်နေရာယူထားတယ်၊ ကိုယ့် computer မှာရှိတဲ့ Drives တွေရဲ့ အချက်အလက်တွေကို ဘယ်လိုကြည့်နိုင်တယ်ဆိုတာကိုပြောသွားမှာပါ။ ဒီ df -h ဆိုတဲ့  command ကတော့ ကိုယ့် computer မှာရှိတဲ့ Drives တွေရဲ့ အချက်အလက်တွေကို သိချင်တဲ့အခါမှာအသုံးပြုနိုင်ပါတယ်။ ဥပမာ- drive ရဲ့ သုံးစွဲမှုပမာဏ၊ လက်ကျန်ပမာဏ စတာတွေကိုကြည့်နိုင်ပါတယ်။ ဒီ du -sh * ဆိုတာကတော့ s ဆိုတာ summarize ဖြစ်ပြီး h ဆိုတာကတော့ human-readable ကိုဆိုလိုတာဖြစ်ပါတယ်။ သူ့ကို လက်ရှိရောက်နေတဲ့ Directory ရဲ့အထဲ file တွေရဲ့ Disk Usage ကိုသိချင်တဲ့အခါမှာသုံးနိုင်ပါတယ်။ လက်ရှိရောက်နေတဲ့ Directory ရဲ့အထဲ မှာ hidden file တွေရဲ့ Disk Usage ကိုသိချင်ရင် du -sh .[!.]* * ဆိုပြီးရိုက်လိုက်တာနဲ့ hidden file တွေရဲ့ file size တွေကိုပါကြည့်နိုင်မှာပါ။

 

နောက်တစ်ခုမျှဝေမှာကတော့ Getting System Information ပါ။ ကိုယ်သုံးနေတဲ့ system ရဲ့ statistic တွေကိုကြည့်နိုင်မှာပါ။ ကျွန်တော်တို့သုံးနေတဲ့ computer ရဲ့ CPU ရဲ့ processors လုပ်ဆောင်ပုံအချက်အလက်တွေကို သိချင်ရင် mpstat 2 10 ဆိုပြီးရိုက်လိုက်တာနဲ့ ဖေါ်ပြပေးမှာဖြစ်ပါတယ်။ Memory(RAM) အချက်အလက်ကို သိချင်ရင်တော့ vmstat 2 10 ဆိုပြီးသုံးနိုင်ပါတယ်။ Network နဲ့ပတ်သက်ပြီး အချက်အလက်တွေကိုသိချင်ရင် netstat ဆိုတဲ့ command ကို အသုံးပြုနိုင်ပါတယ်။ CPU ရဲ့ အသေးစိတ်အချက်အလက်တွေကိုသိချင်ရင် lscpu ဆိုပြီးရိုက်လိုက်တာနဲ့ CPU ရဲ့ Architecture တွေ model တွေ စသည်ဖြင့်တွေ့နိုင်မှာဖြစ်ပါတယ်။ နောက်တစ်ခုကတော့ top ဆိုတဲ့ command ပါ။ သူက dynamic monitoring tool ဖြစ်ပြီး အချိန်နှင့်တပြေးညီ အချက်အလက်တွေကိုတွေ့မြင်နိုင်ပါတယ်။ အဲ့ဒီ top ရဲ့ပြောင်းပြန် static monitoring command တစ်ခုကတော့ ps ဆိုတာဖြစ်ပါတယ်။

နောက်တစ်ခုမျှဝေမှာကတော့ Package Managers ဖြစ်ပါတယ်။ ကျွန်တော်တို့ programs တွေသွင်းတဲ့အခါမှာ Advanced Package Tool (APT) ဆိုတာကို သုံးပြီး install လုပ်တာတွေ၊ update လုပ်တာတွေ upgrade လုပ်တာတွေ၊ uninstall လုပ်တာတွေကို လုပ်ဆောင်နိုင်မှာဖြစ်ပါတယ်။ ကျွန်တော်တို့ program တစ်ခုကိုသွင်းတော့မယ်ဆို အရင်ဆုံး sudo apt-get update ဆိုပြီး update တွေကို စစ်ဆေးသင့်ပါတယ်။ အဲ့ဒါပြီးနောက် သူက upgrade လုပ်လို့ရမယ့် package တွေရှိတယ်လို့ ပြောရင် sudo apt-get upgrade ဆိုပြီးလုပ်ဆောင်ခြင်းဖြင့် packages တွေအားလုံးရဲ့ versions တွေကို up-to-date ဖြစ်စေမှာပါ။ အဲ့ဒီမှာ sudo apt-get dist-upgrade ဆိုတာကော့ သူကအရေးကြီးတဲ့ packages တွေကိုဦးစားပေးပြီး upgrade လုပ်ပေးသွားမှာဖြစ်ပါတယ်။

အခုဒီ Blog လေးကိုဖတ်ပြီး GNU/Linux ရဲ့ဆိုလိုရင်းနဲ့ အသုံးဝင်တဲ့ commands တွေကိုသိရှိပြီး ဆက်လက်လေ့လာနိုင်ဖို့ အထောက်အကူပြုမယ်လို့ မျှော်လင့်ရင်း နှုတ်ဆက်လိုက်ပါတယ်ခင်ဗျ။

Hello

Leave a Reply

Your email address will not be published. Required fields are marked *