2015-08-05 3 views
1

Je cours actuellement Liquidsoap sur Ubuntu 14.4, en streaming sur Icecast, hébergé sur la même boîte.Impossible de redémarrer LiquidSap sans tuer le processus manuellement

Ma configuration fonctionne correctement, mais lors de l'exécution restart liquidsoap sudo service, je reçois l'erreur suivante:

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

Pour redémarrer le savon liquide, je dois tuer le processus ou le redémarrage.

Il fonctionne ensuite correctement. Jusqu'à ce que j'ai besoin de redémarrer pour une raison quelconque.

En guise de remarque, liquidsoap a créé un utilisateur et un groupe appelé liquidsoap, mais j'exécute des commandes sudo via un autre utilisateur que j'ai créé.

Quelqu'un a-t-il des idées?

+1

Quel script init.d utilisez-vous? J'ai un problème similaire, et je suppose que c'est parce que le script init.d ne peut pas trouver le fichier PID. – Brad

+0

aaaah J'ai une ligne dans le script qui empêche la création d'un fichier pid. Je vais jeter un coup d'oeil et revenir vers vous! Merci! – Gordon

+0

Vous êtes un génie. C'était dû à un pid manquant. Je vous remercie! – Gordon

Répondre

1

Correction en activant la création de fichier pid.

Copie de mon 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

J'ai finalement réussi à résoudre ce problème sur mes propres systèmes. Je n'ai pas pu utiliser ce script seul, mais cela a bien fonctionné une fois que j'ai ajouté ce qui suit en haut de mon script Liquidsoap: 'set (" init.daemon.pidfile.path ","/var/run/liquidsoap/main.pid ")' Il semble que l'ID de processus de Liquidsoap change une fois qu'il s'exécute, donc '--make-pidfile' avec' start-stop-daemon' n'était pas approprié dans ce scénario. Quoi qu'il en soit, j'espère que c'est utile à quelqu'un d'autre! – Brad