2013-05-21 4 views
6

Ich habe einen SHOUTcast-Server unter Ubuntu. Der Server-Prozess läuft großartig, aber ich kann nicht scheinen, dass das Daemon-Skript richtig funktioniert. Im Anschluss an ein paar Tutorials fand ich, dass ich folgende Idee hatte:SHOUTcast-Daemon-Skript funktioniert nicht richtig

#!/bin/sh 

CONFIG="/home/apps/shout32/sc_plex.conf" 
DAEMON="/home/apps/shout32/sc_serv" 

case "$1" in 
    start) 
     echo "Starting SC..." 
     $DAEMON $CONFIG > /dev/null 2>&1 & 
     ;; 
    stop) 
     echo "Stopping SC..." 
     kill -9 `ps -C sc_serv -o pid --no-headers` 
     ;; 
    restart) 
     echo "Rebooting SC..." 
     kill -9 `ps -C sc_serv -o pid --no-headers` 
     $DAEMON $CONFIG > /dev/null 2>&1 & 
     ;; 
    *) 
     echo "usage: service sc32d {start | stop | restart}" 
     exit 1 
     ;; 
esac 

Dies funktioniert jedoch nicht. Ich wusste nicht, was das bedeutete, also fing ich an, es Zeile für Zeile zu durchbrechen. Wenn ich das/dev/null Material entfernen - was, wie ich jetzt das Programm verstehen hält im Hintergrund ‚silent‘ läuft - ich diese Meldung und das Programm schließt:

[email protected]:/etc/init.d# service sc32d start 
Starting SC... 
[email protected]:/etc/init.d# 2013-05-21 14:41:50 E  msg:<***>  logger could not open file logs/sc_serv.log 
2013-05-21 14:41:50  I  msg:<***>  Logger shutdown 

[email protected]:/etc/init.d# 
[email protected]:/etc/init.d# ps -C sc_serv 
    PID TTY   TIME CMD 
[email protected]:/etc/init.d# 

Ich war immer noch im Prozess der Erforschung, was genau/dev/null hat und warum, also wollte ich diese Befehle mit allen/dev/null Sachen von Hand, was ich auch tat, und das ist, wo ich irgendeine Art von Fehler-Code auszuführen:

[email protected]:/etc/init.d# /home/apps/shout32/sc_serv /home/apps/shout32/sc_plex.conf > /dev/null 2>&1 & 
[2] 2261 
[email protected]:/etc/init.d# 
[2]- Exit 255    /home/apps/shout32/sc_serv /home/apps/shout32/sc_plex.conf > /dev/null 2>&1 
[email protected]:/etc/init.d# ps -C sc_serv 
    PID TTY   TIME CMD 

Leider klingt das Ergebnis von 'Exit 225' wie ein Fehlercode für Codes, die außerhalb des akzeptablen Bereichs von Codes liegen.

Der interessante Teil des Ganzen Problem ist dies: Wenn ich in das Verzeichnis/home/apps/shout32/Ordner zu navigieren, und die Befehle dort ausgeführt werden, ohne den vollständigen Pfad ... verdammte Ding funktioniert:

[email protected]:/home/apps/shout32# ./sc_serv sc_plex.conf > /dev/null 2>&1 & 
[2] 2245 
[email protected]:/home/apps/shout32# 
[email protected]:/home/apps/shout32# ps -C sc_serv 
    PID TTY   TIME CMD 
2245 pts/0 00:00:00 sc_serv 

Also, etwas ist verpfuscht, weil die Skriptdatei in /etc/init.d/ und nicht in dem Ordner ist, in dem sich die Anwendung befindet? So weit ich weiß, habe ich jeden Schritt in den veröffentlichten Tutorials verfolgt, um SHOUTcast in Ubuntu einzurichten und dann einen Daemon zu machen ... Ich glaube nicht, dass ich etwas verpasst habe. Ich habe das Gefühl, dass die Lösung mich entweder direkt ins Gesicht starrt oder eine Art obskurer Berechtigungssache, die ein bisschen über meinem Kopf ist.

Aber jede Hilfe würde sehr geschätzt werden!


So, basierend auf einer Antwort unten I cd/home/apps/shout32/zum START-Befehl in meinem Skript hinzugefügt, auch hinzugefügt PWD und ls ... zu sehen, ob wir die Tatsache beseitigen könnten, dass die Das Skript konnte das Verzeichnis/log/nicht finden.

mein Skript So, jetzt ist:

CONFIG="/home/apps/shout32/sc_plex.conf" 
DAEMON="/home/apps/shout32/sc_serv" 

cd /home/apps/shout32/ 

case "$1" in 
     start) 
       echo "Starting SC..." 
       cd /home/apps/shout32/ 
       pwd 
       ls 
       $DAEMON $CONFIG & 
       ;; 
     stop) 
       echo "Stopping SC..." 
       kill -9 `ps -C sc_serv -o pid --no-headers` 
       ;; 
     restart) 
       echo "Rebooting SC..." 
       kill -9 `ps -C sc_serv -o pid --no-headers` 
       $DAEMON $CONFIG & 
       ;; 
     *) 
       echo "usage: service sc32d {start | stop | restart}" 
       exit 1 
       ;; 
esac 

ich diese bekam:

[email protected]:/etc/init.d$ service sc32d start 
Starting SC... 
/home/apps/shout32 
changes.txt  readme.txt      sc_serv_debug.conf 
config_builder sc_plex.conf     sc_serv_public.conf 
control   sc_serv      sc_serv_relay.conf 
docs   sc_serv2_linux_07_31_2011.tar sc_serv_simple.conf 
logs   sc_serv_basic.conf    tos.txt 
[email protected]:/etc/init.d$ 2013-06-05 17:52:08  E  msg:<***>  logger could not open file logs/sc_serv.log 
2013-06-05 17:52:08  I  msg:<***>  Logger shutdown 

Antwort

2

Ihr zweiter Schnipsel enthält logger could not open file logs/sc_serv.log. So versucht es in eine Datei sc_serv.log zu schreiben, die es entweder erwartet oder erstellen will in dem Verzeichnis logs das es in dem aktuellen Verzeichnis erwartet. Dies erklärt auch, dass es funktioniert, wenn Sie zuerst nach/home/apps/shout32/wechseln. Ich denke, es gibt eine Datei /home/apps/shout32/logs/sc_serv.log.

können Sie den Speicherort dieser Datei konfigurieren? können Sie nicht einfach cd ... am Anfang des Skripts hinzufügen?

+0

Ja, in meiner eigenen Fehlerbehebung nach meinem OP hatte ich festgestellt, dass es etwas mit/logs zu tun hatte. Es gibt tatsächlich eine /home/apps/shout32/logs/sc_serv.log Ich habe versucht, die Berechtigungen und was nicht auf den Ordner/Datei ändern .... aber was Sie vorschlagen, dachte ich nicht. Wie genau würde ich ein Skript anweisen, so zu arbeiten, als wäre es im X-Verzeichnis? –

+0

Oh! Ich verstehe, was du sagst, starte das Skript einfach mit cd/home/apps/shout32 ....Lass mich das jetzt ausprobieren! –

+0

Ich aktualisierte das OP mit den Ergebnissen, kein Glück. Vielleicht missverstehe ich deinen Vorschlag grob. –