Process Killing in Mac
World of tank က XVM သြင္းျပီး ေနာက္ပုုိင္း ခဏခဏ crush တယ္။ Native app မဟုုတ္ပဲနဲ ့ Wine လုုိမ်ိဳး VM wrapper တစ္ခုုခုု သုုံးတာေၾကာင့္လည္း ျဖစ္လိမ့္မယ္။ crush ျပီးထြက္သြားတဲ့အခါတုုိင္း ျပန္ဝင္ရင္ application is running ဆုုိျပီးျပတယ္။ အဲဒါကိုု ရွင္းဖုုိ့ရာ computer ကုုိ restart ခ်ျပီးမွ ဝင္ခ်င္ရင္ဝင္ ဒါမွမဟုုတ္ အဲဒီ process ေတြ kill ျပီး ဝင္မွရမယ္။ process ေတြ kill ဖုုိ ့ရာလည္း window လုုိမ်ိဳး task manager process ေတြ run တာကုုိ ၾကည့္တဲ့ tab ကုုိ မေတြ ့မိဘူး။ အဲဒါနဲ ့ terminal မွာ
ps aux | grep world
ဆုုိျပီး ၾကည့္လုုိက္ေတာ့ run ထားတဲ့ process က ေလးငါးေျခာက္ခုုေလာက္ ရွိတယ္။ အဲဒါနဲ ့ ထုုိင္ျပီး kill လိုုက္ေတာ့ အဆင္ေျပတဲ့ အခါလည္း ရွိတယ္။ ဒါေပမယ့္ process တစ္ခုုက ေသသြားေပမယ့္ master process က မေသတဲ့အခါ respawn လုပ္လုုိက္တာနဲ ့ကုုိ ဘယ္ေတာ့မွ မျပီးျပတ္ေတာ့ဘူး။ zombie ေတြကုုိ shotgun နဲ ့ ပစ္ရသလုုိပါပဲ။ အဲဒီေတာ့ GUI နဲ ့ Process Manager နဲ ့ဆုုိရင္လည္း kill ဖုုိ ့ရာ အခက္အခဲ ရွိလိမ့္မယ္။ အဲဒါနဲ ့ပဲ grep ကျပတဲ့ process ကုုိ သူဟာသူ တန္း kill လုုိ ့ရေအာင္ script ေလးဘာေလး ေရးဖုုိ ့စဥ္းစားမိတယ္။ stackoverflow မွာလည္းရွာေရာ ဒီလုုိေလးလုုပ္လုုိက္တယ္။
ps aux | grep world | $(awk ‘{print “kill -9” $2}’)
အဲဒီ file ကုုိ save ထားတာေပါ့။ ဥပမာ aa.txt ေပါ့။ ျပီးမွ သုုံးခ်င္ရင္ . ~/aa.txt ဆုုိျပီးလွမ္းေခၚေပါ့။ ဒါေပမယ့္ မလွဘူး စဥ္းစားျပီး alias လုုပ္လုုိက္တယ္။ ေအာက္ကလုုိ
alias killpro = “. ~/aa.txt”
ဒါဆုုိ killpro လုုိ ့ terminal မွာရုုိက္လုုိက္ရုုံပဲ။ ခက္တာက အဲဒီလုုိလုုပ္တာက အျမဲမရဘူး။ terminal ကုုိပိတ္လုုိက္ျပီး ေနာက္တစ္ေခါက္ထပ္သုုံးရင္ မမွတ္မိေတာ့ဘူး။ အျမဲရခ်င္ရင္ အတြက္ အျမဲ register လုုပ္ေပးမယ့္ .bash script ေတြထဲမွာ သြားျပီး ေၾကညာ ေပးရတယ္။ ဒီေနရာမွာ ကြ်န္ေတာ္ကေတာ့ .bash_profile လိုု့ပဲ သုုံးလုုိက္တယ္။
vi ~/.bash_profile
ျပီးရင္ အထဲမွာ အေပၚကဟာကုုိ ရုုိက္ျပီး save လုုိက္ရင္ ရျပီ။ ေရးေနရင္း စဥ္းစား မိတာက World of Tank တစ္ခုုထဲအတြက္မဟုုတ္ပဲ က်န္တဲ့ application ေတြ kill လုုပ္ဖုုိ ့လည္း သုုံးလုုိ ့ရေအာင္ hardcode လုုပ္တဲ့အပုုိင္းေလးကုုိ နည္းနည္းျပင္ဖုုိ ့ဆုုံးျဖတ္လုုိက္တယ္။ ေအာက္ကအတုုိင္းေပါ့။
ps aux | grep $1 | $(awk ‘{print “kill -9” $2}’)
ဒါဆုုိရင္ေတာ့ killpro [kill ခ်င္တဲ့ process] ဆုုိျပီး လုုပ္ရင္ရပါျပီ။