htop Explain - process
Process monitoring လုပ်တဲ့ tool တခုဖြစ်တဲ့ htop ဘယ်လိုအလုပ်လဲ ဘယ်ကနေ data တွေ ယူလဲဆိုတဲ့ series ရဲ့ ဒုတိယမြောက် post ဖြစ်ပါတယ်။ ပထမအပိုင်း htop Explain - uptime ကို ဒီမှာ ဖတ်နိုင်ပါတယ်။
terminal မှာ htop ကို ဖွင့်ကြည့်လိုက်နဲ့ အခုလက်ရှိ run နေတဲ့ process တွေကိုလည်း မြင်ရမှာပါ။
အပေါ်က ပုံထဲမှာ အခုလောလောဆယ် process ၇၄ ခု ရှိနေပါတယ်။ process တွေကို task လို့လည်း ခေါ်ပါတယ်။ htop ကတော့ process အစား task လို့ သုံးပါတယ်။
ကိုယ်က htop
လို့ ရိုက်ကြည့်လိုက်လို့ process တွေအကုန်မမြင်ရဘူးဆိုရင် Shift + k
ကို နှိပ်ကြည့်ပြီးတော့ kernel ကနေ run နေတဲ့ process တွေကိုပါ မြင်ရမှာ ဖြစ်ပါတယ်။ Process ID (PID) column ကို နှိပ်ကြည့်ပြီးပဲဖြစ်ဖြစ် F7 (Sort) ကိုနှိပ်ပြီးတော့ PID
လို့ ရွေးလိုက်တာပဲဖြစ်ဖြစ် process ၁ ကနေ အစဥ်လိုက်တိုင်း အကုန်မြင်ရပါလိမ့်မယ်။
Process ID / PID
Operating system က process တခုစတိုင်း process id တခု သတ်မှတ်တယ်။ ၁ ကနေပြီးတော့ ကိုယ့်ရဲ့ စက်ရဲ့ process limit ထားတဲ့အထိ id တွေ ပေးပါတယ်။ limit ရောက်သွားရင်လည်း မသုံးတော့တဲ့ process id တွေကို ပြန်သုံးပါတယ်။ အဲလိုမှမဟုတ်ပဲ process id တွေအကုန်လုံးလည်း သုံးထားတယ် နောက် process အသစ်လည်း စချင်တယ်ဆိုရင်တော့ error တက်ပါလိမ့်မယ်။ Linux မှာဆို process id တွေ အကုန်ကုန်သွားပြီး ကိုယ့်စက်က resource တွေကို အကုန်ကုန်အောင်လုပ်ပစ်တဲ့ fork bomb လို့ခေါ်တဲ့ virus လိုဟာမျိုးရှိပါတယ်။
bash shell မှာ process တခုကို &
နဲ့ run တယ်ဆိုရင် အဲဒီ process က background မှာ run တယ်။ ပြီးတော့ အဲ process ရဲ့ process id (PID) ကို shell မှာ ပြပေးတယ်။
[email protected]:~$ sleep 10 &
[1] 5297
ဒီမှာဆိုရင် 5297 က sleep 10
ရဲ့ process id ပါ
အဲဒီ process id ကို မမြင်လိုက်ရဘူးဆို echo $!
လို့ ရိုက်ပြီး နောက်ဆုံး run သွားတဲ့ process ရဲ့ id ကို ကြည့်လို့ရပါတယ်။
ဒီ process id တွေကို အသုံးချပြီးတော့ process နဲ့ ပါတ်သက်တဲ့ information တွေဘယ်ကလာလဲဆိုတာကို /proc/<pid>
အောက်မှာ သွားကြည့်လို့ရတယ်။
ဥပမာ process id 5718 ရဲ့ information ဆိုရင် /proc/5718
မှာ သွားကြည့်လို့ရတယ်။
[email protected]:~$ ls /proc/5718/
attr cmdline environ io mem ns pagemap schedstat stat timers
autogroup comm exe limits mountinfo numa_maps personality sessionid statm uid_map
auxv coredump_filter fd loginuid mounts oom_adj projid_map setgroups status wchan
cgroup cpuset fdinfo map_files mountstats oom_score root smaps syscall
clear_refs cwd gid_map maps net oom_score_adj sched stack task
ဘယ် process id က ဘယ် command ကို ရိုက်လိုက်ပြီးတော့ run သွားတယ်ဆိုတာကို အဲ folder ထဲက cmdline
ဆိုတဲ့ file မှာ အခုလို သွားကြည့်လို့ရတယ်။
[email protected]:~$ cat /proc/5718/cmdline
[email protected]:~$
နောက် ဒီ process ကို ဘယ် file directory အောက်ကနေ run သွားတယ် ဘယ် binary file ကို execute လုပ်သွားတယ်ဆိုတာကို အခုလိုလည်း ကြည့်လို့ရတယ်။
[email protected]:~$ ls -l /proc/5718/cwd
lrwxrwxrwx 1 ubuntu ubuntu 0 Jun 14 17:49 /proc/7246/cwd -> /home/ubuntu
[email protected]:~$ ls -l /proc/5718/exe
lrwxrwxrwx 1 ubuntu ubuntu 0 Jun 14 17:49 /proc/7246/exe -> /bin/sleep
အဲတော့ ဒီနည်းနဲ့ပဲ htop မှာ မြင်ရတဲ့ process တွေရဲ့ information တွေကို /proc/<process id>/<file>
အောက်ကနေ သွားဖတ်တယ်ဆိုတာ သိနိုင်ပါတယ်။
နောက်ထပ် proc folder အောက်က တခြား file တွေ အကြောင်းသိချင်ရင်တော့ ဒီ manual page မှာ သွားဖတ်လို့ရပါတယ်။