pid процесса сценария инициализации не работает

Итак, у меня установлен потоковый сервер red5, и я могу запустить его и оставаться запущенным при закрытии окна терминала ssh, используя следующий код сценария init.d:

#!/bin/bash
# For RedHat and cousins:
# chkconfig: 2345 85 85
# description: Red5 flash streaming server
# processname: red5
# Created By: Sohail Riaz ([email protected])

PROG=red5
RED5_HOME=/usr/local/red5
DAEMON=$RED5_HOME/$PROG.sh
PIDFILE=/var/run/$PROG.pid

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

[ -r /etc/sysconfig/red5 ] && . /etc/sysconfig/red5

RETVAL=0

case "$1" in
    start)
    echo -n $"Starting $PROG: "
    cd $RED5_HOME
    $DAEMON >/dev/null 2>/dev/null &
    RETVAL=$?
    if [ $RETVAL -eq 0 ]; then
        echo $! > $PIDFILE
        touch /var/lock/subsys/$PROG
    fi
    [ $RETVAL -eq 0 ] && success $"$PROG startup" || failure $"$PROG startup"
    echo
    ;;
    stop)
    echo -n $"Shutting down $PROG: "
    killproc -p $PIDFILE
    RETVAL=$?
    echo
    [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$PROG
    ;;
    restart)
    $0 stop
    $0 start
    ;;
    status)
    status $PROG -p $PIDFILE
    RETVAL=$?
    ;;
    *)
    echo $"Usage: $0 {start|stop|restart|status}"
    RETVAL=1
esac

exit $RETVAL

Поэтому я могу просто ввести «red5 start», «red5 status» и «red5 stop».

Теперь я переименовал папку red5 в red5bak и тестировал новую обновленную версию в новой папке «red5», которая также использует для запуска файл red5.sh. Я могу запустить это вручную без проблем и работает по назначению, однако при запуске с помощью вышеуказанных команд и кода он говорит, что запущено «ОК», но, похоже, это не так, и при использовании команды «статус» я получаю сообщение об ошибке red5 dead but pid file exists.

Я попытался удалить файлы pid red5 в папках var/run и lock и перезапустить сервер, но все равно получаю ту же проблему.

Если я удалю более новую папку red5 и переименую старую папку, сценарий снова заработает, так как я могу заставить его работать с более новой версией/файлами?

Любая помощь будет оценена по достоинству,

Спасибо.


person nrider    schedule 26.07.2014    source источник


Ответы (1)


Файл указан в вашем сценарии инициализации вверху:

PROG=red5
PIDFILE=/var/run/$PROG.pid

Поэтому попробуйте удалить его (как пользователь root):

rm /var/run/red5.pid
person Alexander Farber    schedule 27.07.2014
comment
Как я уже сказал выше, я уже удалил файл pid в этом каталоге. Похоже, что файл pid создается в этой папке только при запуске исходной рабочей папки/скрипта red5, но после остановки сценария файл pid удаляется из папки var/run. Странно, что при попытке с новой папкой red5 и предыдущим скриптом он говорит, что процесс мертв, но «файл pid существует», хотя, насколько я могу судить, это не так. - person nrider; 29.07.2014