UMS.sh (executado como serviço) no Ubuntu 14.04 não lê o arquivo de configuração

UMS.sh (executado como serviço) no Ubuntu 14.04 não lê o arquivo de configuração

Estou tentando fazer com que meu Ubuntu 14.04 execute um servidor de mídia universal para que eu possa transmitir filmes para meu PS3 (firmware mais baixo 4.55, infelizmente - inquebrável).

Depois de muita pesquisa na net consegui fazê-lo funcionar como um serviço, /etc/init.d/UMS.shos demais arquivos estão na /usr/umspasta. Isso inclui o UMS.confarquivo de configuração, UMS.sharquivo e ums.jararquivo e todos os outros.

Eu usei cream( gedittem problemas com a criação desses arquivos temporários que preciso excluir mais tarde) para editar UMS.confo arquivo.

Estou tentando fazer com que ele seja executado em uma porta específica e tenha uma lista de permissões de IP para que todos na rede não consigam acessar minhas coisas.

Então fiz as alterações no UMS.confarquivo, carreguei-o algumas vezes para verificar se as alterações foram salvas - elas foram salvas - mas quando o faço:

   service UMS.sh start

O UMS será iniciado, mas com todas as configurações padrão.

Por favor ajude. Eu sou novo no Ubuntu, então, por favor, me oriente. Posso fornecer o script /etc/init.d/UMS.shse isso ajudar, mas diga-me como colar aqui, tentei e o # deixou as coisas em negrito.

ATUALIZAÇÃO: Com a ajuda do comentário de Letizia, aqui está o script para

'/etc/init.d/UMS.sh'

#!/bin/bash
#
### BEGIN INIT INFO
# Provides:          ums
# Required-Start:    $local_fs $remote_fs $network
# Required-Stop:     $local_fs $remote_fs $network
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Starts UMS program.
# Description:       Java Upnp Media Server dedicated to PS3
### END INIT INFO

#set -x

# Author: Papa Issa DIAKHATE <[email protected]>
#
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="Universal Media Server"
NAME=UMS.sh
UMS_PROFILE=/etc/$NAME
DAEMON=/usr/ums/$NAME
DAEMON_OPTS="console"
SCRIPTNAME=/etc/init.d/$NAME
UMS_START=1 # Wether to start or not UMS ver at boot time.
DODTIME=30  # Time to wait for the server to die, in seconds.
            # If this value is set too low you might not
            # let the program to die gracefully and 'restart' will not work

test -x $DAEMON || exit 1

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
. /lib/lsb/init-functions

# Include ums defaults if available
if [[ -f "/etc/default/$NAME" ]] ; then
        . /etc/default/$NAME
fi

# May we run the init.d script ?
[[ $UMS_START = 1 ]] || exit 1

#--------------------------------------------------------------------------
# Some color codes
txtred=$'\e[0;31m' # Red
txtylw=$'\e[0;33m' # Yellow
txtrst=$'\e[0m'    # Text Reset
#--------------------------------------------------------------------------
warnout(){
    echo >&2 -e ""$txtylw"Warning:$txtrst $1"
}
#--------------------------------------------------------------------------
running(){
    pid=`pgrep -f 'java .*ums.jar.*'`
}
#--------------------------------------------------------------------------
do_start(){
    running && { warnout "$NAME is already running !"; exit 0; }
    echo "Starting $DESC : $NAME"
    UMS_PROFILE="$UMS_PROFILE" start-stop-daemon --start --quiet --background --oknodo \
        --exec $DAEMON -- $DAEMON_OPTS

}
#--------------------------------------------------------------------------
do_stop(){
    running || { warnout "$NAME is NOT running !"; exit 0; }   
    local countdown="$DODTIME"
    echo -e "Stopping $DESC : $NAME \c "
    kill -9 $pid
    while running; do
        if (($countdown >= 0)); then
            sleep 1; echo -n .;
            ((--countdown))
        else
            break;
        fi
    done
    echo
    # If still running, then try to send SIGINT signal
    running && { \
        echo >&2 "Using kill -s SIGINT instead"; \
        echo >&2 "If you see this message again, then you should increase the value of DODTIME in '$0'."; \
        kill -2 $pid; \
    }

    if [ -e "/usr/share/ums/debug.log" ]; then
    count=9
    while [ $count -ge 1 ]
    do
    if [ -e "/usr/share/ums/debug.log.$count" ]; then
        plus=$((count+1))
        mv "/usr/share/ums/debug.log.$count" "/usr/share/ums/debug.log.$plus"
    fi
        count=$((count-1))
    done
    if [ -e "/usr/share/ums/debug.log" ]; then
        mv "/usr/share/ums/debug.log" "/usr/share/ums/debug.log.1"
    fi
    fi

    return 0
}
#--------------------------------------------------------------------------
do_force-stop(){
    running || { warnout "$NAME is NOT running !"; exit 0; }   
    echo "Stopping $DESC : $NAME"
    kill -9 $pid
    if [ -e "/usr/share/ums/debug.log" ]; then
    count=9
    while [ $count -ge 1 ]
    do
    if [ -e "/usr/share/ums/debug.log.$count" ]; then
        plus=$((count+1))
   mv "/usr/share/ums/debug.log.$count" "/usr/share/ums/debug.log.$plus"
    fi
       count=$((count-1))
    done
    if [ -e "/usr/share/ums/debug.log" ]; then
   mv "/usr/share/ums/debug.log" "/usr/share/ums/debug.log.1"
    fi
    fi
}
#--------------------------------------------------------------------------
do_status(){
    echo -n " * $NAME is "
    ( running || { echo "NOT running "; exit 0; } )
    ( running && { echo "running (PID -> $(echo $pid))"; exit 0; } )
}
#--------------------------------------------------------------------------
case "$1" in

    start|stop|force-stop|status)
        do_${1}
        ;;
    restart|reload)
        do_stop
        do_start
        ;;
    force-restart|force-reload)
        do_force-stop
        do_start
        ;;
    *)
        echo "Usage: $SCRIPTNAME {start|stop|force-stop|restart|force-restart|reload|force-reload|status}"
        exit 1
        ;;
esac

Responder1

Parece que você usou o mesmo script que eu usei para instalar o UMS. Encontrei esse mesmo problema e encontrei uma maneira de corrigi-lo. O script cria um link em /etc que aponta para um arquivo em /root que não existe. Se você fizer um ls -l em /etc você verá algo como:

UMS.sh < /root/.config/UMS.conf

mas o script nunca cria esse arquivo, provavelmente também não tem as permissões. Então o que fiz foi deletar esse link e criar um novo apontando para o arquivo de configuração em /usr/ums/

sudo rm /etc/UMS.sh
sudo ln -s /usr/ums/UMS.conf /etc/UMS.sh

Isso acabou funcionando para mim e agora posso simplesmente editar o arquivo UMS.conf para fazer quaisquer alterações. Espero que isto ajude.

Responder2

Não, a correção correta é esta:

  • execute UMS.sh como root; ele criará o perfil /root/.config/UMS
  • edite o script init /etc/init.d/ums e coloque o caminho do perfil correto: UMS_PROFILE=/root/.config/UMS/

informação relacionada