forum.bitel.ru
http://forum.bitel.ru/

обновление 5.1 от 5 апреля
http://forum.bitel.ru/viewtopic.php?f=22&t=6665
Страница 1 из 1

Автор:  Yarlan Zey [ 06 апр 2012, 01:42 ]
Заголовок сообщения:  обновление 5.1 от 5 апреля

Изображение

в остальном работает нормально.

Автор:  skyb [ 06 апр 2012, 06:34 ]
Заголовок сообщения:  Re: обновление 5.1 от 5 апреля

Yarlan Zey писал(а):
Изображение

в остальном работает нормально.

дык а мож в скриптах чего нето? =)

Автор:  Yarlan Zey [ 06 апр 2012, 08:22 ]
Заголовок сообщения:  Re: обновление 5.1 от 5 апреля

и поиском по файлу и руками глядел - не нашел

гугл говорит, что при компиляции явы надо использовать postfixparser вместо guiparser

Автор:  snark [ 06 апр 2012, 16:56 ]
Заголовок сообщения:  Re: обновление 5.1 от 5 апреля

Из мана
Цитата:
Код:
service SCRIPT COMMAND [OPTIONS]

...
The SCRIPT parameter specifies a System V init script, located in /etc/init.d/SCRIPT. The supported values of COMMAND depend on the invoked script, service passes COMMAND and OPTIONS it to the init script unmodified.

Что из этого Вам надо перевести?

P.S. Яву вообще не надо трогать ;)

Автор:  Yarlan Zey [ 06 апр 2012, 17:58 ]
Заголовок сообщения:  Re: обновление 5.1 от 5 апреля

вот это переведите
Цитата:
9) Создайте службу сервера. Для этого откройте скопируйте скрипты из BGBillingServer/script в /etc/rc.d/init.d

http://bgbilling.ru/v5.1/doc/ch01s04.html

Автор:  snark [ 06 апр 2012, 19:34 ]
Заголовок сообщения:  Re: обновление 5.1 от 5 апреля

Вы копируете "скрипт" в /etc/init.d/, в результате чего у Вас лежит шелл скрипт "/etc/init.d/скрипт", который собственно и запускает/стопит службу, а комманда service только работает с этим скриптом - все!
Никто не говорит о том что нельзя сделать так:
Код:
/etc/init.d/скрипт status

что собсно и является эквивалентом
Код:
service скрипт status

Загвоздка в том что service просто не понимает того что ей отвечает скрипт.





Изображение

Автор:  Yarlan Zey [ 06 апр 2012, 20:15 ]
Заголовок сообщения:  Re: обновление 5.1 от 5 апреля

Код:
#!/bin/sh

# Source function library.
COMMON_FUNCTIONS=true;
if [ -r /etc/init.d/functions ]; then
    . /etc/init.d/functions
else
    COMMON_FUNCTIONS=false;
fi

if [ -z "$BGBILLING_HOME" ]; then
    export BGBILLING_HOME=/usr/local/BGBillingServer
fi

checkmysql() {
ret=0
STARTTIMEOUT=30
while [ $STARTTIMEOUT -gt 0 ]; do
    RESPONSE=`/usr/bin/mysqladmin -uUNKNOWN_MYSQL_USER ping 2>&1` && break
    echo "$RESPONSE" | grep -q "Error checking mysql: access denied for user" && break
    sleep 1
    let STARTTIMEOUT=${STARTTIMEOUT}-1
done

if [ $STARTTIMEOUT -eq 0 ]; then
    ret=1
    echo "Error checking mysql: timeout error occurred."
fi

return $ret;
}

mysocket=/var/lib/mysql/mysql.sock
checkmysqlsocket() {
ret=0
STARTTIMEOUT=30
while [ $STARTTIMEOUT -gt 0 ]; do
        if [ -S $mysocket ]; then
           break
       fi
        sleep 1
        let STARTTIMEOUT=${STARTTIMEOUT}-1
    done
           
    if [ $STARTTIMEOUT -eq 0 ]; then
        ret=1
        echo "Error checking mysql: timeout error occurred."
    fi

    return $ret;
}

#depend() {
#    need mysqld
#}

start() {
    echo -n $"Starting $prog: "

    $BGBILLING_HOME/$serverstart

    RETVAL=$?

    if [ $COMMON_FUNCTIONS == true ]; then
        if [ $RETVAL -eq 0 ]; then
            action $"" /bin/true
        else
            action $"" /bin/false
        fi
    else
   echo "OK";
    fi
#    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$servicename
}

stop() {
    echo -n $"Stopping $prog: "

    if [ $COMMON_FUNCTIONS == true ]; then
        status -p $BGBILLING_HOME/.run/$prog.pid $prog > /dev/null
        STVAL=$?

        if [ $STVAL -eq 0 ]; then
            action $"" /bin/true
        else
            action $"process not found " /bin/false
        fi
    fi

    $BGBILLING_HOME/$serverstop

    RETVAL=$?
}

restart() {
    stop
    start
}

bgstatus() {
    if [ $COMMON_FUNCTIONS == true ]; then
        status -p $BGBILLING_HOME/.run/$prog.pid $prog
        STVAL=$?

        if [ $STVAL -eq 0 ]; then
            action $"" /bin/true
        else
            action $"process not found " /bin/false
        fi
    fi

    $BGBILLING_HOME/$serverstatus
}


вот меня и интересует почему у меня не воспринимается полностью этот скрипт

Автор:  barguzin2 [ 06 апр 2012, 20:31 ]
Заголовок сообщения:  Re: обновление 5.1 от 5 апреля

Вот эта строчка ему не нравится
Код:
status -p $BGBILLING_HOME/.run/$prog.pid $prog

В /etc/init.d есть еще факлик functions. Найди в нем функцию status(). Можешь её показать ? Похоже что она у тебя какая-то другая.

Автор:  Yarlan Zey [ 06 апр 2012, 21:34 ]
Заголовок сообщения:  Re: обновление 5.1 от 5 апреля

Код:
status()
{
   # Test syntax.
   if [ $# = 0 ]; then
      msg_usage "status [options]... {program}"
      return 1
   fi

   local BASENAME CMDNAME DISPNAME EXPECT FLAGS LOCKFILE PIDFILE WHICH

# Process options.
   CMDNAME=
   DISPNAME=
   EXPECT=
   LOCKFILE=
   PIDFILE=
   while [ "$1" != "${1##-}" ]; do
      case "$1" in
      --)
         shift
         break
         ;;
      --displayname)
         shift
         DISPNAME="$1"
         shift
         ;;
      --expect-user)
         shift
         EXPECT="$1"
         shift
         ;;
      --lockfile)
         shift
         LOCKFILE="$1"
         shift
         ;;
      --name)
         shift
         CMDNAME="$1"
         shift
         ;;
      --pidfile)
         shift
         PIDFILE="$1"
         shift
         ;;
      *)
         echo "status: unrecognized option: $1" >&2
         return 1
         ;;
      esac
   done

# We need the absolute pathname for /proc/*/exe checks.
   if [ -z "$1" ]; then
      msg_usage "status [options]... {program}"
      return 1
   fi
   WHICH="$(absolute "$1")" || return 1
   [ -n "$CMDNAME" ] &&
      BASENAME="$(basename "$CMDNAME")" ||
      BASENAME="$(basename "$1")" || return 1

   [ -n "$DISPNAME" ] || DISPNAME="$BASENAME"

# Try to guess the PID file if one isn't specified manually.
   if [ -z "$PIDFILE" ]; then
      PIDFILE="/var/run/$BASENAME.pid"
      test -f "$PIDFILE" || PIDFILE=
   elif [ "$PIDFILE" = none ]; then
      PIDFILE=
   fi

   if [ -n "$CMDNAME" -a -z "$PIDFILE" ]; then
      echo "status: --name is set but --pidfile is not set" >&2
      return 1
   fi

# Actually determine the status.
   FLAGS="--stop --test"
   [ -z "$CMDNAME" ] &&
      FLAGS="$FLAGS --exec $WHICH --user-fallback-to-name" ||
      FLAGS="$FLAGS --name $CMDNAME"
   [ -z "$PIDFILE" ] || FLAGS="$FLAGS --pidfile $PIDFILE"
   [ -z "$EXPECT" ] || FLAGS="$FLAGS --user $EXPECT"
   start-stop-daemon $FLAGS >/dev/null

# Report it.
   if [ $? -eq 0 ]; then
      echo "$DISPNAME is running"
      return 0
   fi

   if [ -n "$PIDFILE" -a -f "$PIDFILE" ]; then
      echo "$DISPNAME is dead, but stale PID file exists"
      return 1
   fi

   [ -n "$LOCKFILE" ] || LOCKFILE="/var/lock/subsys/$BASENAME"
   if [ -f "$LOCKFILE" ]; then
      echo "$DISPNAME is dead, but subsystem is locked"
      return 2
   fi

   echo "$DISPNAME is stopped"
   return 3
}


-p на --pidfile менял

теперь ругается, что процесс не найден

сразу заранее сообщаю:
EXPECT-user добавлял - не помогло
пид файл существует по этому пути и права есть

переименуйте тему в "грабли сертифицированного альтлинукса"

Автор:  snark [ 06 апр 2012, 22:34 ]
Заголовок сообщения:  Re: обновление 5.1 от 5 апреля

Пойдем иным путем ...
Кто нибудь видит в приведенном выше скрипте конструкцию в духе этой:
Код:
case "$1" in
   start)
      комманда для start
      ;;
   stop)
      комманда для stop
      ;;
   restart)
      stop
      start
      ;;
   status)
      комманда для status
      ;;
   *)
      echo $"Usage: $0 {start|stop|restart|status}"
      exit 1
      ;;
esac


status (параметр для скрипта, а не комманда status) скрипт не обрабатывает.
Либо (до|пере)писывайте, либо перестаньте хотеть от скрипта странного.


P.S. Первый кто заикнется про то что со скриптами БГБ не работает chkconfig получит в глаз!

Автор:  snark [ 06 апр 2012, 22:41 ]
Заголовок сообщения:  Re: обновление 5.1 от 5 апреля

Для того чтобы было понятнее о чем я вообще говорю - сравните скрипт у БГБ и, например, вот этот, работающий, скрипт:
Код:
# cat /etc/init.d/atd
#!/bin/bash
#
#       /etc/rc.d/init.d/atd
#
# Starts the at daemon
#
# chkconfig: 345 95 5
# description: Runs commands scheduled by the at command at the time \
#    specified when at was run, and runs batch commands when the load \
#    average is low enough.
# processname: atd

# Source function library.
. /etc/init.d/functions

# pull in sysconfig settings
[ -f /etc/sysconfig/atd ] && . /etc/sysconfig/atd

test -x /usr/sbin/atd || exit 0

RETVAL=0

#
#       See how we were called.
#

prog="atd"

start() {
        # Check if atd is already running
        if [ ! -f /var/lock/subsys/atd ]; then
            echo -n $"Starting $prog: "
            daemon /usr/sbin/atd $OPTS && success || failure
            RETVAL=$?
            [ $RETVAL -eq 0 ] && touch /var/lock/subsys/atd
            echo
        fi
        return $RETVAL
}

stop() {
        echo -n $"Stopping $prog: "
        killproc /usr/sbin/atd
        RETVAL=$?
        [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/atd
        echo
        return $RETVAL
}


restart() {
        stop
        start
}

reload() {
        restart
}

status_at() {
        status /usr/sbin/atd
}

case "$1" in
start)
        start
        ;;
stop)
        stop
        ;;
reload|restart)
        restart
        ;;
condrestart)
        if [ -f /var/lock/subsys/atd ]; then
            restart
        fi
        ;;
status)
        status_at
        ;;
*)
        echo $"Usage: $0 {start|stop|restart|condrestart|status}"
        exit 1
esac

exit $?
exit $RETVAL

Автор:  Yarlan Zey [ 06 апр 2012, 22:55 ]
Заголовок сообщения:  Re: обновление 5.1 от 5 апреля

snark, внимательно читай прежде чем язвить. хоть погляди в выложенный 5.1 на сайте


я привел скрипт, где конкретно есть опция, которая не завелась

Код:
#!/bin/sh

# chkconfig: - 98 02
# description: bgbilling daemon
# processname: bgbilling

. /etc/init.d/bgcommonrc

prog="bgbilling"
serverstart=server_start.sh
serverstop=server_stop.sh
serverstatus=server_status.sh

case "$1" in
        start)
                start
        ;;

        stop)
                stop
        ;;

        restart)
               restart
        ;;

        status)
               bgstatus
        ;;

        *)
                echo "Usage: $0 start | stop | restart | status" >&2
                exit 1
        ;;
esac


держи, если легче стало

оба скрипта взяты с сайта бг и никак не придуманы самостоятельно.


Изображение

Автор:  snark [ 07 апр 2012, 12:50 ]
Заголовок сообщения:  Re: обновление 5.1 от 5 апреля

Yarlan Zey писал(а):
snark, внимательно читай прежде чем язвить

Я это и делаю. Внимательно сравниваем это:
Yarlan Zey писал(а):
Код:
#!/bin/sh

# chkconfig: - 98 02
# description: bgbilling daemon
# processname: bgbilling

. /etc/init.d/bgcommonrc

prog="bgbilling"
serverstart=server_start.sh
serverstop=server_stop.sh
serverstatus=server_status.sh

case "$1" in
        start)
                start
        ;;

        stop)
                stop
        ;;

        restart)
               restart
        ;;

        status)
               bgstatus
        ;;

        *)
                echo "Usage: $0 start | stop | restart | status" >&2
                exit 1
        ;;
esac


и это:
Yarlan Zey писал(а):
Код:
#!/bin/sh

# Source function library.
COMMON_FUNCTIONS=true;
if [ -r /etc/init.d/functions ]; then
    . /etc/init.d/functions
else
    COMMON_FUNCTIONS=false;
fi

if [ -z "$BGBILLING_HOME" ]; then
    export BGBILLING_HOME=/usr/local/BGBillingServer
fi

checkmysql() {
ret=0
STARTTIMEOUT=30
while [ $STARTTIMEOUT -gt 0 ]; do
    RESPONSE=`/usr/bin/mysqladmin -uUNKNOWN_MYSQL_USER ping 2>&1` && break
    echo "$RESPONSE" | grep -q "Error checking mysql: access denied for user" && break
    sleep 1
    let STARTTIMEOUT=${STARTTIMEOUT}-1
done

if [ $STARTTIMEOUT -eq 0 ]; then
    ret=1
    echo "Error checking mysql: timeout error occurred."
fi

return $ret;
}

mysocket=/var/lib/mysql/mysql.sock
checkmysqlsocket() {
ret=0
STARTTIMEOUT=30
while [ $STARTTIMEOUT -gt 0 ]; do
        if [ -S $mysocket ]; then
           break
       fi
        sleep 1
        let STARTTIMEOUT=${STARTTIMEOUT}-1
    done
           
    if [ $STARTTIMEOUT -eq 0 ]; then
        ret=1
        echo "Error checking mysql: timeout error occurred."
    fi

    return $ret;
}

#depend() {
#    need mysqld
#}

start() {
    echo -n $"Starting $prog: "

    $BGBILLING_HOME/$serverstart

    RETVAL=$?

    if [ $COMMON_FUNCTIONS == true ]; then
        if [ $RETVAL -eq 0 ]; then
            action $"" /bin/true
        else
            action $"" /bin/false
        fi
    else
   echo "OK";
    fi
#    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$servicename
}

stop() {
    echo -n $"Stopping $prog: "

    if [ $COMMON_FUNCTIONS == true ]; then
        status -p $BGBILLING_HOME/.run/$prog.pid $prog > /dev/null
        STVAL=$?

        if [ $STVAL -eq 0 ]; then
            action $"" /bin/true
        else
            action $"process not found " /bin/false
        fi
    fi

    $BGBILLING_HOME/$serverstop

    RETVAL=$?
}

restart() {
    stop
    start
}

bgstatus() {
    if [ $COMMON_FUNCTIONS == true ]; then
        status -p $BGBILLING_HOME/.run/$prog.pid $prog
        STVAL=$?

        if [ $STVAL -eq 0 ]; then
            action $"" /bin/true
        else
            action $"process not found " /bin/false
        fi
    fi

    $BGBILLING_HOME/$serverstatus
}


"Найдите 10 отличий"(с)

Различия более чем очевидны ;)

Автор:  Phricker [ 07 апр 2012, 13:40 ]
Заголовок сообщения:  Re: обновление 5.1 от 5 апреля

так это два разных скрипта
bgbilling
bgcommonrc

Кстати я для себя сделал и диалап и ipn и voip в виде
Код:
[root@lia ~]# cat /etc/init.d/bgipn
#!/bin/sh

# chkconfig: - 98 02
# description: bgipn daemon
# processname: bgipn

prog="bgipn"
serverstart=netflow_start.sh
serverstop=netflow_stop.sh
serverstatus=netflow_status.sh

# Source function library.
COMMON_FUNCTIONS=true;
if [ -r /etc/init.d/functions ]; then
    . /etc/init.d/functions
else
    COMMON_FUNCTIONS=false;
fi

export JAVA_HOME=/usr/java/default

if [ -z "$BGIPN_HOME" ]; then
    export BGIPN_HOME=/opt/BG/BGIPNNetflowCollector
fi

start() {
    echo -n $"Starting $prog: "

    $BGIPN_HOME/$serverstart

    RETVAL=$?

    if [ $COMMON_FUNCTIONS == true ]; then
        if [ $RETVAL -eq 0 ]; then
            action $"" /bin/true
        else
            action $"" /bin/false
        fi
    else
        echo "OK";
    fi
#    [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$servicename
}

stop() {
    echo -n $"Stopping $prog: "

    if [ $COMMON_FUNCTIONS == true ]; then
        status -p $BGIPN_HOME/.run/$prog.pid $prog > /dev/null
        STVAL=$?

        if [ $STVAL -eq 0 ]; then
            action $"" /bin/true
        else
            action $"process not found " /bin/false
        fi
    fi

    $BGIPN_HOME/$serverstop

    RETVAL=$?
}

restart() {
    stop
    start
}

bgstatus() {
    if [ $COMMON_FUNCTIONS == true ]; then
        status -p $BGIPN_HOME/.run/$prog.pid $prog
        STVAL=$?

        if [ $STVAL -eq 0 ]; then
            action $"" /bin/true
        else
            action $"process not found " /bin/false
        fi
    fi

    $BGIPN_HOME/$serverstatus
}

case "$1" in
        start)
                start
        ;;

        stop)
                stop
        ;;

        restart)
                restart
        ;;
        status)
               bgstatus
       ;;

        *)
                echo "Usage: $0 start | stop | restart" >&2
                exit 1
        ;;
esac[root@lia ~]#


Правда еще пришлось добавить в их скрипты чтобы создавались pid файлы. Но это уже мелочи :)
Зато у меня теперь красиво пишет OK или FAILED xD

Автор:  Yarlan Zey [ 07 апр 2012, 14:20 ]
Заголовок сообщения:  Re: обновление 5.1 от 5 апреля

snark писал(а):
Я это и делаю."Найдите 10 отличий"(с)

Различия более чем очевидны ;)


Phricker писал(а):
так это два разных скрипта
bgbilling
bgcommonrc


дайте лучше мне кто-нибудь functions, который понимает -p. я его задействую

Автор:  barguzin2 [ 07 апр 2012, 15:11 ]
Заголовок сообщения:  Re: обновление 5.1 от 5 апреля

snark, тут схема следующая: скрипт bgbilling цепляет bgcommonrc первый вызывает функцию bgstatus, которая находится во втором. второй в свою очередь цепляет файл /etc/init.d/functions и уже оттуда вызывает функцию status(). Вот на ней то всё и спотыкается.

Yarlan Zey, ты не подменяй стандатную функцию status(). Лучше посмотри другие инит-скрипты по аналогии переделай БГ-шный bgcommonrc. Или попробуй заменить функцию bgstatus() на следующую

Код:
bgstatus() {
    if [ -f $BGBILLING_HOME/.run/$prog.pid ]; then
        PID=`cat $BGBILLING_HOME/.run/$prog.pid`
        if [ -f /proc/$PID/exe ]; then
            action $"$prog (pid $PID) running..." /bin/true
            $BGBILLING_HOME/$serverstatus
        else
            action $"$prog process died, but pid-file exists " /bin/false
        fi
    else
        action $"$prog process not found " /bin/false
    fi
}

Автор:  barguzin2 [ 07 апр 2012, 15:18 ]
Заголовок сообщения:  Re: обновление 5.1 от 5 апреля

Кстати, в дефолтном скрипте bgcommonrc строчку
Код:
$BGBILLING_HOME/$serverstatus

нужно перенести по хорошему в оператор условия после строчки
Код:
action $"" /bin/true
а то если сервер остановлен - эта команда всё равно запускается, тупит и выдает java.net.SocketTimeoutException: Receive timed out

Автор:  Yarlan Zey [ 07 апр 2012, 15:41 ]
Заголовок сообщения:  Re: обновление 5.1 от 5 апреля

barguzin2 писал(а):
Yarlan Zey, ты не подменяй стандатную функцию status(). Лучше посмотри другие инит-скрипты по аналогии переделай БГ-шный bgcommonrc.

я не хочу подменять. я просто вместо штатного functions в скрипте определю другой файл functions2

переделывал по аналогии. пишет процесс не найден



подменли бгстатус на вышепредложенный, выдает:
bgbilling process died, but pid-file exists

хотя биллинг работает, и хорошо

Автор:  Phricker [ 07 апр 2012, 17:00 ]
Заголовок сообщения:  Re: обновление 5.1 от 5 апреля

barguzin2 писал(а):
строчку нужно перенести по хорошему в оператор условия после строчки

Хых. Спасибо :) А я то все думал, чего это оно. Считал так и положено :D

Автор:  dimOn [ 09 апр 2012, 11:34 ]
Заголовок сообщения:  Re: обновление 5.1 от 5 апреля

О чём речь то вообще? Там же просто пример скриптов исключительно под System V, а не какой-то окончательный работающий механизм. Ясно понятно, что будет работать только в очень некоторых линуксах. Никто эти скрипты на альтлинуксе не проверял.

Автор:  Yarlan Zey [ 09 апр 2012, 13:34 ]
Заголовок сообщения:  Re: обновление 5.1 от 5 апреля

да? а я думал, что это полностью работающая и унифицированная система. только зря кипеш поднимал :)

Автор:  skyb [ 09 апр 2012, 15:26 ]
Заголовок сообщения:  Re: обновление 5.1 от 5 апреля

На пятом альте и пятом бг у меня все работало замечательно

Автор:  Yarlan Zey [ 09 апр 2012, 15:38 ]
Заголовок сообщения:  Re: обновление 5.1 от 5 апреля

а с шестым все веселее

Автор:  skyb [ 09 апр 2012, 16:35 ]
Заголовок сообщения:  Re: обновление 5.1 от 5 апреля

Yarlan Zey писал(а):
а с шестым все веселее

Зато он сертифицирован :-D

Автор:  Yarlan Zey [ 09 апр 2012, 18:44 ]
Заголовок сообщения:  Re: обновление 5.1 от 5 апреля

кста, на пятом может и не замечал сообщение про опцию?

так то бг работает хорошо.

Автор:  dimOn [ 10 апр 2012, 11:09 ]
Заголовок сообщения:  Re: обновление 5.1 от 5 апреля

Yarlan Zey писал(а):
да? а я думал, что это полностью работающая и унифицированная система. только зря кипеш поднимал :)

ну инструкция там явно под system v, не так ли? К слаке, арчу итд итп + их производным уже неприменимо.

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/