Rss

Archives for : February2018

Split File

Sysadmin တွေ နေ ့စဉ်ကြုံတွေ ့ ရတဲ့ ပြသနာ တွေထဲက တစ်ခု ကတော့ log file တွေ ပါပဲ။ အဲမှာ မှ ကိုရွှေ program က daily split တွေ ခွဲ ပါတယ် တစ်ရက်ကို ပဲ 30 GB လောက် ရှိတဲ့ single file ဆို နားကားပါပြီး။ Incident တစ်ခု ဖြစ်လို့ ကြားထဲက log ကို ဖောက်ယူ ချင်တယ် တိုင်ပက်ပါပြီး less နဲ့ ဖတ်တယ်၊ awk နဲ့  ဆွဲထုတ်တယ်၊ grep နဲ့ စစ်တယ်။ 30GB ကို ဖတ်တဲ့ system resource usage ကို လဲ ထည့်တွက်ရပါသေးတယ်။ အချိန် လဲပိုပေးရပါတယ်။ ကွ ျန်တော်က တော့ 2GB , 15 file ခွဲလိုက်ပါတယ် less နဲ ့ ဝင်ကြည့်ရတာလဲ မြန်သွားသလို့၊ အချိန်ကုန် လဲသက်သာပါတယ်။ 

Code:

split -b 2GB example.log prefix

 

size ကို သတ်မှတ်ရာမှာလဲ (K,M,G,T,P,E,Z,Y) unit များကို သုံးထားရင်တော့ x 1024 ၊  KB,MB,…  unit တွေ ဆိုရင် တော့ x 1000 နဲ့ ခွဲ သွားမှာပါ။ File size နဲ့ တင် မဟုတ်ပဲ  line အရေ အတွက်နဲ့ လဲ ခွဲထုတ်နိုင်ပါသေးတယ်။ 

Code:

split -l 1000 example.log prefix

 

split –help ခေါ်ပြီး အသုံး တည့်သလိုလဲ သုံးနိုင်ကြပါစေဗျာ။:)

split လုပ်ထားတဲ့ file တွေကို လဲ cat နဲ ့ လွယ်ကူစွာ ပြန်ပေါင်းနိုင်ပါတယ်။

Code:

cat prefix* > example.log

Zombie Process

Zombie process ဆိုတာ က တော့ child process ရဲ့ အလုပ်ပြီး တဲ့ အချိန် မှာ parent process ကို exit status မပို့ပဲ ကျန်နေတဲ့ process တွေပါ။ သူကို သာမန် kill နဲ့ လဲ ပိတ်လိုက်လို့မရပါဘူး သူကိုယ်တိုင်က kill ဖြစ်နေပြီးသား မို့ပါ။ အချို့ program တွေမှာ တော့ သုံးပြီးသား PID ကို child မှာ ပြန် မသုံးစေချင်တာကြောင့် child process ကို zombie အနေ နဲ့ hold လုပ်ထားတာတွေ ဖြစ်ပါတယ်။ Program ရဲ့ လိုအပ်ချက်ကြောင့်မဟုတ်ပဲ zombie တွေ များလာရင်တော့ ပြသနာက သုံးပြီးသား PID တွေ သုံးလို့မရတော့ ခြင်း နဲ့ system memory ကို ခွဲဝေ ပေးနေရပါတယ်။

Zombie process ကို top ဒါမှမဟုတ် ps aux ရဲ့ STAT မှာ ‘Z’ အနေ နဲ့ ကြည့်လို့ရပါတယ်။Zombie ကို (” kill -s SIGCHLD ” ) ဆို ပြီး ပိတ်ဖြစ်နိုင်သလို့ သူရဲ့ parent process ကို kill ပြီး zombie ကို orphan process များကဲ့သို့ init က adopted ဖြစ်အောင် လုပ်ပြီး ရှင်းလင်းနိုင်ပါတယ်။ (: