UMS.sh (запускається як служба) на Ubuntu 14.04 не буде читати конфігураційний файл


1

Я намагаюся змусити свій ubuntu 14.04 запустити універсальний медіа-сервер, щоб я можу передавати фільми на свій ps3 (найнижча прошивка 4.55, на жаль - unjailbreakable).

Після довгих досліджень в мережі я зміг запустити його як службу, /etc/init.d/UMS.shінші файли знаходяться в /usr/umsпапці. До них відносяться UMS.confфайл конфігурації, UMS.shфайл та ums.jarфайл та всі інші.

Я використовував cream( geditє проблеми зі створенням цих тимчасових файлів, які мені потрібно видалити пізніше) для редагування UMS.confфайлу.

Я намагаюся змусити його працювати на певному порту та мати білий список IP-адрес, тому всі в мережі не зможуть отримати доступ до моїх матеріалів.

Тому я вніс зміни у UMS.confфайл, завантажив його кілька разів, щоб перевірити, чи збережені зміни - вони зробили - але коли я це зробити:

   service UMS.sh start

UMS запуститься, але з усіма конфігураціями за замовчуванням.

Будь ласка, допоможіть. Я новачок у Ubuntu, тому також прошу мене пройти. Я можу надати сценарій, /etc/init.d/UMS.shякщо це допомагає, але, будь ласка, підкажіть, як вставити сюди, я спробував, і # зробив речі жирним шрифтом.

ОНОВЛЕННЯ: За допомогою коментаря Letizia, ось сценарій для

'/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 <paissad@gmail.com>
#
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

Ви можете опублікувати свій скрипт на pastebin.com та оновити своє запитання за допомогою URL-адреси, або ви можете опублікувати його у своєму запитанні, виділіть увесь рядок та використовуйте <$>для позначення цих рядків як код.
Леті

Чудово, дякую! Я щойно оновив питання зі сценарієм.
Newwbie

Відповіді:


3

Схоже, ви використовували той самий сценарій, що і я для встановлення UMS. Я наткнувся на цю саму проблему і знайшов спосіб її виправити. Сценарій створює посилання в / etc, яке вказує на файл в / root, який не існує. Якщо ви робите ls -l on / etc, ви повинні побачити щось на кшталт:

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

але сценарій фактично ніколи не створює цей файл, ймовірно, не має дозволів. Тож, що я зробив, було видалити це посилання та створити нове, що вказує на конфігураційний файл у / usr / ums /

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

Це закінчилося для мене, і тепер я можу просто редагувати файл UMS.conf, щоб внести будь-які зміни. Сподіваюся, це допомагає.


0

Ні, правильне виправлення таке:

  • запустити UMS.sh як корінь; він створить профіль /root/.config/UMS
  • відредагуйте скрипт init /etc/init.d/ums та поставте шлях профілю вправо: UMS_PROFILE = / root / .config / UMS /
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.