2015-08-05 7 views
1

В настоящее время я запускаю Liquidsoap на Ubuntu 14.4, передавая в Icecast, размещенный на той же коробке.Невозможно перепроверить жидкость без обработки вручную

Моя установка работает правильно, однако при выполнении перезагрузки Liquidsoap Sudo службы, я получаю следующее сообщение об ошибке:

fatal error exception unix.unix_error(50, "bind", "") 

Для того, чтобы перезагрузить жидкое мыло, мне нужно, чтобы убить процесс или перезагрузку.

Затем он работает правильно. Пока мне не нужно перезагружаться по какой-то причине.

В качестве побочного примечания liquidsoap создал пользователя и группу под названием liquidsoap, однако я запускаю команды sudo через другого пользователя, которого я создал.

У кого-нибудь есть идеи?

+1

Что init.d скрипт вы используете? У меня есть аналогичная проблема, и я предполагаю, что это потому, что скрипт init.d не может найти файл PID. – Brad

+0

aaaah У меня есть строка в скрипте, которая предотвращает создание файла pid. Я посмотрю и вернусь к вам! Благодаря! – Gordon

+0

Вы, сэр, гений. Это было из-за недостатка pid. Спасибо! – Gordon

ответ

1

Исправлено включение создания файла pid.

Копия моего init.d - https://gist.github.com/anonymous/d7e232fc280d2fe1df56

#!/bin/sh 
### BEGIN INIT INFO 
# Provides:   liquidsoap 
# Required-Start: $remote_fs $network $time 
# Required-Stop:  $remote_fs $network $time 
# Should-Start: 
# Should-Stop: 
# Default-Start:  2 3 4 5 
# Default-Stop:  0 1 6 
# Short-Description: Starts the liquidsoap daemon 
# Description: 
### END INIT INFO 

user=liquidsoap 
group=liquidsoap 
prefix=/usr 
exec_prefix=${prefix} 
confdir=/etc/liquidsoap 
liquidsoap=${exec_prefix}/bin/liquidsoap 
rundir=/var/run/liquidsoap 

# Test if $rundir exists 
if [ ! -d $rundir ]; then 
    mkdir -p $rundir; 
    chown $user:$group $rundir 
fi 

case "$1" in 
    stop) 
    echo -n "Stopping liquidsoap channels: " 
    cd $rundir 
    has_channels= 
    for liq in *.pid ; do 
     if test $liq != '*.pid' ; then 
     has_channels=1 
     echo -n "$liq " 
     start-stop-daemon --stop --quiet --pidfile $liq --retry 4 
     fi 
    done 
    if test -n "$has_channels"; then 
     echo "OK" 
    else 
     echo "no script found in $confdir" 
    fi 
    ;; 

    start) 
    echo -n "Starting liquidsoap channels: " 
    cd $confdir 
    has_channels= 
    for liq in *.liq ; do 
     if test $liq != '*.liq' ; then 
     has_channels=1 
     echo -n "$liq " 
     start-stop-daemon --start --quiet --pidfile $rundir/${liq%.liq}.pid \ 
      --chuid $user:$group --exec $liquidsoap -- -d $confdir/$liq 
     fi 
    done 
    if test -n "$has_channels"; then 
     echo "OK" 
    else 
     echo "no script found in $confdir" 
    fi 
    ;; 

    restart|force-reload) 
    $0 stop 
    $0 start 
    ;; 

    *) 
    echo "Usage: $0 {start|stop|restart|force-reload}" 
    exit 1 
    ;; 
esac 
+0

Я, наконец, обошел эту проблему в своих системах. Я не смог использовать этот скрипт сам по себе, но он отлично работал, когда я добавил следующее в мой скрипт Liquidsoap: 'set (« init.daemon.pidfile.path »,«/var/run/liquidsoap/main.pid ")' Кажется, что идентификатор процесса Liquidsoap изменяется после его запуска, поэтому '-make-pidfile' с' start-stop-daemon' не подходит для этого сценария. Во всяком случае, я надеюсь, что это поможет кому-то еще! – Brad