вторник, 24 марта 2009 г.

init.d скрипт для UTM5 на Linux


Скрипт для запуска-останова порта UTM5 (версия 5.2.1) на rpm-based Linux сложно назвать работоспособным - в нем отсутсвует крвйне нужная в хозяйстве команда restart, да и stop попросту не работает - приходится вручную искать процесс и убивать его с помощью kill -9
Скрипт был переписан заново и принял такой вид:

#!/bin/sh
# chkconfig: 2345 10 80
# description: UTM Billing System Core
trap '' 1 2 3 15

ulimit -c 0

pid_file=/var/run/utm5_core.pid
utm_exec=safe_utm5_core
err_log=/netup/utm5/log/utm5_core.log
exec_dir=/netup/utm5/bin

start() {
if [ -x $exec_dir/$utm_exec ]
then
echo "Starting utm5_core"
$exec_dir/$utm_exec start &
else
echo $exec_dir/$utm_exec no such file
fi
}

stop() {
echo "Stopping utm5_core"
pid=`ps ax -o pid,command |\
awk '{if ($2 ~ /sh$/ && $3 ~ /safe_utm5_core$/) {print $1}}'`
if [ -n "$pid" ]
then
kill -9 $pid
sleep 5
fi
pid=`ps ax -o pid,command |\
awk '{if ($2 ~ /utm5_core$/) {print $1}}'`
if [ -n "$pid" ]
then
kill -9 $pid
fi
}

case "$1" in
restart)
stop
start
;;
start)
start
;;
stop)
stop
;;
*)
echo "Usage: `basename $0` {start|stop|restart}" >&2
exit 64
;;
esac


Задача соответствия стандартам на init.d скрипты не ставилась - было не до эстетизма.
Тестировался на Mandriva 2009.0 и CentOS 5.2