LINUX.ORG.RU

Не запускается (нормально) FFServer после обновления FreeBSD.

 , ,


0

1

С дуру обновил систему с FreeBSD 8.2 до 8.4... И ядро обновил. Из-за добавления кучи левых текстов в ряд файлов в /etc перестали работать файрволл, named и т.д...

почистил конфиги от шлака, вроде всё заработало... но: Перестал запускаться ffserver. Motion работает нормально, а при попытке запуска ffserver происходят чудеса.

если запускать его так:

# /usr/local/etc/rc.d/ffserver start

то он пишет:

/usr/local/etc/rc.d/ffserver: WARNING: run_rc_command: cannot run /usr/local/bin/ffserver &

Если зайти в rc.d и запустить оттуда:

/usr/local/etc/rc.d # ffserver start
То он запускается, но потоковая картинка останавливается, ломается и рассыпается. Поток отдаётся в swf-файл, который я встраиваю в сайт. После обновления проигрывается 3 секунды видео и картинка замирает разломанная. До обновления всё работало норм, были другие проблемы, но они касаются больше конфигурирования выходного потока.

Я покопался, и нашёл, что это сообщение отдаётся файлом /etc/rc.subr а конкретно строкой 750:

if [ ! -x "${_chroot}${_chroot:+/}${command}" ]; then
warn "run_rc_command: cannot run $command"
return 1
fi

Я так понял проблема с chroot.

У файла /usr/local/bin/ffserver владелец root, права 0555 Прошу помочь с запуском

содержимое /usr/local/etc/rc.d/ffserver

#!/bin/sh
ffserver_enable="${ffserver_enable-NO}"

. /etc/rc.subr

name=ffserver
rcvar=ffserver_enable

command="/usr/local/bin/${name} &"
required_files=/usr/local/etc/ffserver.conf

load_rc_config ${name}
run_rc_command "$1"
не менялось, так установилось из портов.

FreeBSD SERVER1.lcl 8.4-RELEASE FreeBSD 8.4-RELEASE #0: Sat Jun 15 17:08:06 EEST 2013     Root@SERVER1.lcl:/usr/obj/usr/src/sys/KXMOD  i386

Что интересно: Если его запустить, как работает выше:

root@SERVER1:/usr/local/etc/rc.d # ffserver
ffserver version 0.7.15, Copyright (c) 2000-2013 the FFmpeg developers
  built on Jun 19 2013 16:29:15 with gcc 4.2.1 20070831 patched [FreeBSD]
  configuration: --prefix=/usr/local --mandir=/usr/local/man --enable-shared --enable-gpl --enable-postproc --enable-avfilter --enable-pthreads --enable-memalign-hack --enable-runtime-cpudetect --cc=cc --extra-cflags=' -I/usr/local/include' --extra-ldflags='-L/usr/local/lib ' --extra-libs=-pthread --disable-debug --disable-sse --disable-mmx --disable-libaacplus --disable-indev=alsa --disable-outdev=alsa --disable-libopencore-amrnb --disable-libopencore-amrwb --disable-libcelt --disable-libdirac --disable-libfaac --enable-libfreetype --enable-frei0r --disable-libgsm --enable-libmp3lame --enable-libopencv --enable-libopenjpeg --disable-librtmp --disable-libschroedinger --disable-libspeex --disable-libtheora --disable-vaapi --disable-vdpau --disable-libvo-aacenc --disable-libvo-amrwbenc --disable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid
  libavutil    50. 43. 0 / 50. 43. 0
  libavcodec   52.123. 0 / 52.123. 0
  libavformat  52.111. 0 / 52.111. 0
  libavdevice  52.  5. 0 / 52.  5. 0
  libavfilter   1. 80. 0 /  1. 80. 0
  libswscale    0. 14. 1 /  0. 14. 1
  libpostproc  51.  2. 0 / 51.  2. 0
Он запускается...

Потом

root@SERVER1:/usr/local/etc/rc.d # /usr/local/etc/rc.d/ffserver restart
Stopping ffserver.
/usr/local/etc/rc.d/ffserver: WARNING: run_rc_command: cannot run /usr/local/bin/ffserver &

Т.е. при попытке рестарта по абсолютному пути она ЗАВЕРШАЕТ процесс, а запустить снова не может...

если запустать его по абсолютному пути - посылает на... Если заходить в папку rc.d и просто запускать ffserver ... даже без start - он запускается... если зайдя в rc.d запустить ffserver stop он игнорирует команду и всё равно запускает ffserver даже не говоря, что процесс запущен..

if [ ! -x «${_chroot}${_chroot:+/}${command}» ]; then
command=«/usr/local/bin/${name} &»

hint: файл «/usr/local/bin/${name} &» не существует, а потому не является исполняемым.

AITap ★★★★★ ()
Ответ на: комментарий от AITap

Спасибо.

Да, это действительно так... В «стоковом» скрипте запуска изменил command=«/usr/local/bin/${name} &» на command=«/usr/local/bin/${name}»

И плюшка начала нормально работать.

Я так понимаю, это недоработка разработчиков ffmpeg??? Насколько я помню, символ & запускает процесс в фоне?

На меня, как на клиента ssh это никак не влияет... Правильно ли, что rc не воспринимает команду command=«/usr/local/bin/${name} &» ?

Kesano ()
Ответ на: Спасибо. от Kesano

Это недоработка автора файла /usr/local/etc/rc.d/ffserver, который записал в переменную, в которой нужно хранить имя файла, команду.

Если этот файл запускается при старте системы, он повесит её запуск, пока ffserver не завершится. Вам нужно вернуть & в другое место скрипта, чтобы ffserver запускался в фоне.

AITap ★★★★★ ()
Ответ на: комментарий от AITap

Скрипт.

В другое - это в какое? Я привел код скрипта запуска выше. Не могли бы вы предложить своё решение? Спасибо.

Kesano ()
Ответ на: Скрипт. от Kesano

Я бы попробовал вот так:

run_rc_command "$1" &

AITap ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.