Принудительный останов процессов биллинга

Материал из BiTel WiKi

Перейти к: навигация, поиск

Зачастую может возникнуть ситуация, когда процесс биллинга в *NIX невозможно остановить штатными средствами. Например, при неостановке сервера перед его обновлением, возможна ситуация, когда после ./bg_installer.sh update команда ./server_stop.sh не остановит сервер. В этом случае процесс можно найти и остановить штатными средствами ОС:

[root@x BGBillingServer]# ps axwwwww | grep Server
15202 pts/8    Sl     0:03 /opt/java/jre/bin/java -Dnetworkaddress.cache.ttl=3600 -Xmx256m -Djava.awt.headless=true -cp .:./lib/* bitel.billing.server.Server start
15272 pts/8    R+     0:00 grep Server
 
[root@x BGBillingServer]# kill -9 15202

Поиск процесса удобнее всего осуществлять по имени запускаемого класса java процесса, вы можете его посмотреть в скрипте запуска, например для server_start.sh:

nohup  ${JAVA_HOME}|>/bin/java -Dnetworkaddress.cache.ttl=3600 -Xmx256m -Djava.awt.headless=true -cp ${CLASSPATH}|>  bitel.billing.server.Server $1 $2 $3   > ./log/server.out 2>&1 &

Аналогично можно искать и останавливать процессы Radius, DataLoader, TaskExecuter. Некоторую сложность представляет случай, когда на одной машине запущены несколько серверов какого-то одного вида. В этом случае можно вставлять произвольные метки в CLASSPATH процесса и искать по ним. Пример скрипта запуска с меткой radius_voip:

cd ${0%${0##*/}}.
 
JAVA_HOME=/usr/java/jdk
 
BGRAD_HOME_VOIP=.
CLASSPATH="${BGRAD_HOME_VOIP}:radius_voip:${BGRAD_HOME_VOIP}/lib/*"
 
${JAVA_HOME}|>/bin/java  \
         -server -Xmx800m -cp $CLASSPATH bitel.billing.server.radius.Radius \
         $1 $2 $3 $4 $5 $6

Как искать процесс:

[bill@bill-2 radius_voip]$ ps axwwww | grep radius_voip
Личные инструменты