اینکه دقیقاً زامبی ها چین و چیکار میکنند رو شما بگید! من فقط میدونم چیزای خوبی نیستند ظاهراً یه سری پروسه های تاریخ گذشته و بدردنخور که فقط حافظه رو اشغال میکنند هستند... (آره؟!)
به هر حال...
امروز دیدم حدود 8 تا زامبی دارم، به فکر افتادم چطور میشه اونها رو از بین برد.
وقتی روی IRC پرسیدم کلی متلک بارم کردند:
- کد: گزینش همه
(14:28:24) Nabi: how can I remove zombie?!
(14:28:40) [R]: Nabi: reboot
(14:29:04) Nabi: [R]: and other way?!
(14:29:10) poutine: Nabi, shoot them in the head, decapitate them
(14:29:31) [R]: Nabi: you could ignore it
(14:29:34) eremite_: Destroy the brain.
(14:29:36) Anss|: kill -9 does not help ?
(14:30:27) frogzoo: Nabi: you have to perform an exorcism
(14:31:43) Nabi: off :>
(البته نمیدونم شاید هم اینها اصطلاحات طبیعی بودند که سواد من کشش نداشت! )
ظاهراً راهی جز ریست کردن سیستم نبود... ولی بعد خودم یه سرچ ساده کرده و یه کد عروسک(!) برای از بین بردن اونها، پیدا کردم که میزارم اینجا:
- کد: گزینش همه
#! /bin/bash
#
# Zombie processes killing script. Must be run under root.
case "$1" in
--admin)
stat=`ps ax | awk '{print $1}' | grep -v "PID" | xargs -n 1 ps lOp | grep -v "UID" | awk '{print"pid: "$3" *** parent_pid: "$4" *** status: "$10" *** process: "$13}' | grep ": Z"`
if ((${#stat} > 0));then
echo zombie processes found:
echo .
ps ax | awk '{print $1}' | grep -v "PID" | xargs -n 1 ps lOp | grep -v "UID" | awk '{print"pid: "$3" *** parent_pid: "$4" *** status: "$10" *** process: "$13}' | grep ": Z"
echo -n "Kill zombies? [y/n]: "
read keyb
if [ $keyb == 'y' ];then
echo killing zombies..
ps ax | awk '{print $1}' | grep -v "PID" | xargs -n 1 ps lOp | grep -v "UID" | awk '{print$4" status:"$10}' | grep "status:Z" | awk '{print $1}' | xargs -n 1 kill -9
fi
else
echo no zombies found!
fi
;;
--cron)
stat=`ps ax | awk '{print $1}' | grep -v "PID" | xargs -n 1 ps lOp | grep -v "UID" | awk '{print"pid: "$3" *** parent_pid: "$4" *** status: "$10" *** process: "$13}' | grep ": Z"`
if ((${#stat} > 0));then
ps ax | awk '{print $1}' | grep -v "PID" | xargs -n 1 ps lOp | grep -v "UID" | awk '{print$4" status:"$10}' | grep "status:Z" | awk '{print $1}' | xargs -n 1 kill -9
echo `date`": killed some zombie proceses!" >> /var/log/zombies.log
fi
;;
*) echo 'usage: zombies {--cron|--admin}'
;;
esac
exit 0
روش استفاده هم بسیار سادست.
کد بالا رو تحت فایل zombies ذخیره و بدین صورت استفاده کنید:
- کد: گزینش همه
./zombies --admin
اما اگر خواستید که اون رو توی cron jobs قرار بدید تا به صورت خودکار در فواصل زمانی خاص عملیات رو انجام بده؛ بدین صورت استفاده کنید:
- کد: گزینش همه
./zombies --cron
نهایتاً گزارش کار در فایل /var/log/zombies.log ذخیره میشه.
منبع: http://sunoano.name/ws/public_xhtml/deb ... _processes
زامبی چیست: http://en.wikipedia.org/wiki/Zombie_process
با تشکر
نبی