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 *