Ksh скрипт для закрытия процесса

Как-то у меня возникла проблема, необходимо было убивать подлипшие  процессы, которые могли так закушать память что сервак начинал кряхтеть и выдавать не характерные звуки 🙂 В моем случаи это был подлипший поллер Cacti, который собирал данные с Asterisk-ов. Для этого я написал небольшой скрипт, который может убивать определенный процесс:

#!/bin/ksh
if [ $# -gt 0 ]; then
process_name=$1
ps_count=`ps -ef | grep -v 'grep' | grep -v 'kill' | grep -i -c $process_name`
echo "Process count: $ps_count"
set -A array_name `ps -ef | grep -i $process_name | grep -v 'grep' | grep -v 'kill' | awk '{print $2}' | sort -u`
print "ps -ef | grep -i $process_name | grep -v 'grep' | grep -v 'kill' | awk '{print \$2 \$8}' | sort -u -n"
print "${array_name[*]}"
kill_count=0
while [ $kill_count -lt $ps_count ]
do
kill -9 ${array_name[$kill_count]}
# print "kill -15 ${array_name[$kill_count]}"
((kill_count=kill_count+1))
done
else
print "Usage: $0 process_name"
print ""
fi

Если назвать скрипт например kill_process.sh, то запускаем его как:

#kill_process.sh <название процесса>

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>