Принудительный останов процессов биллинга
Материал из 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