Наконец-то я нашел ответ, как обычно это было что-то очень простое и логичное.
Сценарий INIT, который входит в/etc/init.d/для инициализации запуска и завершения работы. Не все сценарии init одинаковы!
Поэтому я собираюсь поделиться тем, как я получил RED5 службу, чтобы работать в целом.
Это для CentOS 6.4 32bit на Linux VPS, и на самом деле я переустановил свою систему, пытаясь понять мою ошибку, но в моём наборе системы не было ничего плохого.
Поэтому сначала java rpm, чтобы вам не нужно apache. Благодаря @ slm
$ wget --no-check-certificate\
--no-cookies \
--header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com" \
"http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-i586.rpm"
Затем rpm -ivh jdk-7u51-linux-i586.rpm
Установите последнюю RED5 версию, которая в настоящее время RC2 (выпуск 2 выше RC1)
cd /usr/local/
wget http://red5.org/downloads/red5/1_0/red5-1.0.0-RC2.tar.gz
tar -xzvf red5-1.0.0.tar.gz
rm red5-1.0.0.tar.gz
mv red5-1.0.0 red5
Теперь все важные
vi/etc/init.d/red5
# !/bin/sh # Для RedHat и кузенов: # chkconfig: 2345 85 85 # описание: Red5 сервер потоковой передачи флэш-памяти # имя процесса: red5
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
Активировать скрипт init:
chmod 755/etc/init.d/red5 chkconfig red5 --add chkconfig red5 on
Обновите настройки, расположенные по адресу:
/usr/local/red5/conf/* (фактически не уверены в этой части!)
Запустите его:
/etc/init.d/red5 start
Я уверен, что любое количество скриптов init работает, но иногда вам нужно поместить каталог ваших файлов JDK в скрипт, и я просто нахожу вышеприведенный сценарий более простым. Но если вы хотите знать, они расположены в /usr/lib/jvm
-121--290645-
Вы можете использовать вверху
и нажать u , чтобы получить отчет пользователя. Или просто запустите:
atop -u
-121--290625-
Ваши веб-серверы уже должны записываться в локальный файл, а syslog-ng считывает этот файл и отправляет его на ваш целевой Logserver. В Ubuntu журналы Apache сохраняются по умолчанию в/var/log/apache2. Файл syslog-ng.conf или файл в каталоге/etc/syslog-ng/conf.d должен содержать следующие строки, указывающие место отправки журналов Apache.
source s_apache {
file("/var/log/apache2/access.log");
file("/var/log/apache2/error.log");
};
log { source(s_apache);
destination(d_tls);
};
Перечитав вопрос, я заметил, что вы еще не сделали этого. На самом деле я написал запись в блоге о пошаговом способе выполнения этой операции , которая включает в себя приведенную выше конфигурацию, и оставляет ваши данные в локальных журналах в качестве отработки отказа.
Длина (или количество элементов в )ассоциативного массива доступна как ${#array[@]}
, как и для обычного массива. Если это число равно нулю, то массив пуст.
if [ "${#array[@]}" -ne 0 ]; then
echo 'array is not empty'
fi
Для обычной переменной оболочки можно использовать тест -v
, чтобы проверить, существует ли она или нет:
if [ -v variable ]; then
echo 'variable exists'
fi
... но это интуитивно не работает с массивами. Поэтому вы не можете надежно использовать это, чтобы определить, существует ли массив, но он пуст, или он еще не объявлен.
Проверка будет верна для массивов, если их ключ 0
существует.
[ -z ${!dict[*]} ] && echo "yes" || echo "no" yes
это должно быть нормально, чтобы проверить, что он пуст.