Наконец я нашел ответ, как обычно, это было что-то очень простое и логичное.
Скрипт INIT - это скрипт, который находится в /etc/init.d/ для инициализации запуска и выключения. Не все скрипты init одинаковы!
Поэтому я собираюсь поделиться тем, как я заставил службу RED5 работать в целом.
Это для CentOs 6.4 32bit на linux VPS, и на самом деле я закончил переустановкой системы, пытаясь понять свою ошибку, но в моей системе все было в порядке.
Итак, сначала java rpm, чтобы вам не нужен был apache ant. Спасибо @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
Теперь важный скрипт INIT.
vi /etc/init.d/red5
#!/bin/sh # Для RedHat и кузенов: # chkconfig: 2345 85 85 # description: Red5 flash streaming server # processname: 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
Если вам нужно содержимое файла в переменной в вашей текущей оболочке, описанное выше не будет работать, так как присваивание выполняется в подоболочке и будет потеряно после выхода из подоболочки (по общему признанию, есть оболочки, которые не теряют переменную ).
Для работы sudo
необходимо иметь запись в sudoers
, позволяющую выполнить команду. Присвоение переменной не является командой, поэтому выше снова произойдет сбой.
Если вы хотите, чтобы содержимое файла было в переменной без разрешения на чтение этого файла,попробуй
WID=$(echo "a" | sudo -S cat /var/lib/FILE)