Anzeige:
Seite 1 von 6 123 ... LetzteLetzte
Ergebnis 1 bis 15 von 76

Thema: Syntax-Problem mit bash-Script

  1. #1
    Registrierter Benutzer
    Registriert seit
    17.12.2007
    Beiträge
    40

    Syntax-Problem mit bash-Script

    Hallo,

    leider habe ich schon seit einiger Zeit ein Syntax mit meinem eigenen Start/Stop/Restart-Script für einen Shoutcast-Server.

    Hier mal das Script:

    Code:
    #!/bin/bash
    # Startprogramm für den SHOUTCasting-Server
    # Copyright by Michael Kaps; www.michis-homepage.net
    
    #################################### KONFIGURATION ########################################
    ###########################################################################################
    ## Pfad zur Datei sc_serv des SHOUTCasting-Servers (Dateinamen nicht mehr mit angeben)
    path_shoutcast="/home/shoutcast"
    ###########################################################################################
    ## Screens zur Überwachung des Servers verwenden (Aufrufbar mit screen -r sc1) ( 0 = Aus / 1 = Ein)
    use_screen="1"
    ###########################################################################################
    ## Speziellen Benuzter wählen der den SHOUTCasting-Server starten soll (Erhöht die Sicherheit; User muss angelegt sein) ( 0 = Aus / 1 = Ein)
    use_user="0"
    username="shoutcast"
    ###########################################################################################
    #################################### KONFIGURATION ENDE ###################################    
    
    case "${1}" in
            start)
                    ## if [ "${start}" != "1" ]; then
                    if [[ ! -e "${path_shoutcast}/server.pid" ]]; then
    
                            # Falls Screen aktiviert
                            if [ "${use_screen}" == "1" ]; then
                            	if [ "${use_user}" == "1" ]; then
                                    	su -c '"${path_shoutcast}/sc_serv"' "${username}"
                                    else
                                    	screen -dmS sc1 "${path_shoutcast}/sc_serv"
                                    fi
    
                                    # Wenn Kommando fehlerfrei, dann PID-File anlegen
                                    if [ "${?}" == "0" ]; then
                                            echo "done"
                                            touch "${path_shoutcast}/server.pid"
                                    else
                                            echo "false"
                                    fi
    
                            # Falls Screen nicht aktiviert oder nicht eindeutig
                            else
                            	if [ "${use_user}" == "1" ]; then
                                    	su -c '"${path_shoutcast}/sc_serv"' "${username}"
                                    else
                                    	"${path_shoutcast}/sc_serv"
                                    fi
    
                                    # Wenn Kommando fehlerfrei, dann Variable auf gestartet setzen
                                    if [ "${?}" == "0" ]; then
                                            echo "done"
                                            touch "${path_shoutcast}/server.pid"
                                    else
                                            echo "false"
                                    fi
                            fi
                    else
                            echo "Server scheint bereits online zu sein!"
                    fi
            ;;
            restart)
                    ##if [ "${start}" == "1" ]; then
                    if [[ -e "${path_shoutcast}/server.pid" ]]
                            if [ "${use_screen}" == "1" ]; then
                            	if [ "${use_user}" == "1" ]; then
                            		su -c "killall -9 sc1" "${username}"
                            		su -c 'screen -dmS sc1 "${path_shoutcast}/sc_serv"' "${username}"
                            	else
                            		killall -9 sc1
                            		screen -dmS sc1 "${path_shoutcast}/sc_serv"
                            	fi
                            	
                                    if [ "${?}" == "0" ]; then
                                            echo "done"
                                            touch "${path_shoutcast}/server.pid"
                                    else
                                            echo "false"
                                    fi
                            else
                                    if [ "${use_user}" == "1" ]; then
                                   		su -c 'killall -9 "${path_shoutcast}/sc_serv" && "${path_shoutcast}/sc_serv"' "${username}"'
                                   	else
                                   		killall -9 "${path_shoutcast}/sc_serv" && "${path_shoutcast}/sc_serv"' "${username}"
                                   	fi
                                   	
                                    if [ "${?}" == "0" ]; then
                                            echo "done"
                                            touch "${path_shoutcast}/server.pid"
                                    else
                                            echo "false"
                                    fi
                            fi
                    else
                            echo "Der Server scheint nicht online zu sein, bitte erst starten!"
                    fi
            ;;
            status)
                    ##if [ "${start}" == "1" ]; then
                    if [[ -e "${path_shoutcast}/server.pid" ]]
                            echo "Server scheint online zu sein!"
                    ##elif [ "${start}" == "0" ]; then
                    elif [[ ! -e "${path_shoutcast}/server.pid" ]]
                            echo "Server scheint offline zu sein!"
                    fi
            ;;
            stop)
                    ##if [ "${start}" == "1" ]; then
                    if [[ -e "${path_shoutcast}/server.pid" ]]
                            if [ "${use_screen}" == "1" ]; then
                            	if [ "${use_user}" == "1" ]; then
                                    	su -c 'killall -9 "sc1" "${username}"'
                                    else
                                    	killall -9 sc1
                                    fi
                                    
                                    if [ "${?}" == "0" ]; then
                                            echo "done"
                                            rm -f "${path_shoutcast}/server.pid"
                                    else
                                            echo "false"
                                    fi
                            else
                                    if [ "${use_user}" == "1" ]; then
                                    	su -c 'killall -9 "${path_shoutcast}/sc_serv"'
                                    else
                                    	killall -9 "${path_shoutcast}/sc_serv"
                                    fi
                                    
                                    if [ "${?}" == "0" ]; then
                                            echo "done"
                                            rm -f "${path_shoutcast}/server.pid"
                                    else
                                            echo "false"
                                    fi
                            fi
            
                    ##elif [ "${start}" == "0" ]; then
                    elif [[ ! -e "${path_shoutcast}/server.pid" ]]
                            echo "Server scheint nicht online zu sein, bitte erst starten!"
                    fi
            ;;
            *)
                    echo "Syntax:"
                    echo "shoutcast (start|stop|status|restart)"
                    exit 2
            ;;
    esac
    Und hier die Fehlermeldung die ich bekomme:

    Code:
    hxxxxx:~# sh shoutcast_control.sh
    : command not foundh: line 4:
    : command not foundh: line 18:
    'houtcast_control.sh: line 19: syntax error near unexpected token `in
    'houtcast_control.sh: line 19: `case "${1}" in
    An was könnte das denn liegen?
    Ich kann leider einfach kein Syntaxfehler in Zeile 19 finden.
    Ebenso seltsam erscheint mir der Fehler in Zeile 4 und 18, worüber er sich über eine leere Zeile beschwert.

    MfG
    Michael

  2. #2
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Moin,

    wo ist Dein Script entstanden? Die verstümmelten Fehlermeldungen lassen auf WinDOS-Editor schliessen (also auch auf WinDOS-Zeilenende \r\n). Versuch mal:
    Code:
    tr -d '\r' <DeinScript >DeinScript.tmp && mv DeinScript.tmp DeinScript
    und versuchs nochmal mit dem Start.

    Jan

  3. #3
    Registrierter Benutzer
    Registriert seit
    17.12.2007
    Beiträge
    40
    Vielen Dank für deine Antwort, genau das war das Problem! =)
    Dann müsste es eig. auch reichen wenn ich in Zukunft das Zeichenlayout einfach von ANSI auf DOS umstelle, oder?

    Allerdings beschwert er sich jetzt über eine angeblich überflüssige Else-Anweisung:
    Code:
    h852677:~# ./DeinScript
    ./DeinScript: line 56: syntax error near unexpected token `else'
    ./DeinScript: line 56: `                else'
    Ich habe auch direkt in der Zeile 56 nachgeschaut, nur ist dort das else eig. ganz zu Recht vorhanden, nur wo steckt denn das Problem?

    MfG
    Michael

  4. #4
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Zitat Zitat von Fireball22 Beitrag anzeigen
    Vielen Dank für deine Antwort, genau das war das Problem! =)
    Dann müsste es eig. auch reichen wenn ich in Zukunft das Zeichenlayout einfach von ANSI auf DOS umstelle, oder?
    Eig. reicht das eben nicht. Wenn Du unter Win/DOS am Ende einer Zeile <ENTER> drückst, dann wird da immer ein <CR><LF> eingebaut, und Unix / Linux mag das nun mal nicht, dem reicht ein <LF>. Du hast 4 Möglichkeiten:

    1. Die Naheliegende: Entwickle Deine Unix-Shellscripts unter Unix (mit kate z. B. hast Du einen recht vernünftigen Editor in KDE, das Nonplusultra aller Editoren ist natürlich vim, und wenn Du es ganz kompliziert magst, dann startest Du das Betriebssystem "emacs", da gibts auch einen Editor mitgeliefert ;-) SCNR

    2. Die Umständliche: Du entwickelst weiter mit Deinem Lieblings-Editor unter Win/DOS und schubst danach jedesmal den "tr" aus meinem 1. Posting an.

    3. Die Pragmatische: Du entwickelst in Zukunft unter Win/DOS mit einem vernünftigen Editor (z. B. UltraEdit oder TextPad), der Dateien auch im Unix-Format abspeichern kann (in UltraEdit zu finden unter Datei -> Konvertieren -> DOS->Unix).

    4. Die Pfiffige: Wenn Du die Scripts per z. B. FTP auf den Server überträgst, dann achtest Du darauf, dass der Übertragungsmodus "ASCII" ist (in ftp mit "ascii" einzustellen), dann wird ftp die Zeilenenden selbstständig umwandeln.

    Zitat Zitat von Fireball22 Beitrag anzeigen
    Allerdings beschwert er sich jetzt über eine angeblich überflüssige Else-Anweisung:
    Du machst es einem nicht gerade einfach. Ich habe mir jetzt Dein Script rauskopiert und auf meinem System abgespeichert, damit ich rausfinde, was überhaupt in Zeile 56 steht.

    Sieht da oben erstmal ok aus, aber (wenn es nicht an immer noch vergriesgnaddelten Zeilenumbrüchen liegt) ein paar Sachen sind mir aufgefallen:

    Was soll die Konstruktion z. B. in Zeile 22? (if [[ ... ]]; then) - warum hast Du da doppelt geklammert?

    Dann vergiss bitte die "==" für einen Vergleich im "test"-Befehl (also in den eckigen Klammern), alphanumerisch ist der Vergleichsoperator "=" und numerisch heisst das "-eq" (equal) - die Abfrage des Returncodes eines Befehls sollte also so aussehen: "if [ $? -eq 0]; then".

    In etlichen Zeilen ab 62 hast Du (neben der überflüssigen doppelten Klammerung) einen Syntax-Fehler, da fehlt das "...; then" (in den auskommentierten Zeilen darüber sind die noch da). Vielleicht bringt das den Parser durcheinander, so dass er Dir schon oben einen Fehler liefert.

    Noch ein paar Bemerkungen zum Stil: Es ist ja sehr löblich, dass Du Variablen immer mit ${...} klammerst und immer in "" setzt - aber das macht das Script nicht unbedingt lesbarer. Eine Variable, die Du im Script selbst setzt (wie $use_screen oder $use_user), kannst Du IMHO getrost als vorhanden voraussetzen und brauchst die "" nicht, der Returncode $? muss weder geklammert noch in "" gesetzt werden, er ist immer da und danach folgende Zeichen wie z. B. $?0 ändern nicht die Bedeutung der Variablen $?. ${...} sollte man IMHO nur dann nutzen, wenn danach Zeichen kommen, die die Shell als Teil eines Variablennamens erkennen könnte, wenn Du die Variablen allein stehen hast, dann brauchst Du das nicht.

    Der letzte Absatz ist meine persönliche Meinung, ich finde den Code ohne überflüssige "" und {} einfach besser lesbar. Es wird sicher Andere hier geben, die das Gegenteil behaupten ;-)

    Jan

  5. #5
    Registrierter Benutzer
    Registriert seit
    17.12.2007
    Beiträge
    40
    Vielen Dank für dein Posting!

    Genau, dann werde ich einfach in meinem "Lieblings-Editor" TextPad das ganze immer in DOS konvertieren.

    Und ich habe jetzt auch mal wirklich komplett alle deiner beschriebenen Änderungen an mein Script angewandt und jetzt sieht das ganze so aus:

    Code:
    #!/bin/bash
    # Startprogramm f▒r den SHOUTCasting-Server
    # Copyright by Michael Kaps; www.michis-homepage.net
    
    #################################### KONFIGURATION ########################################
    ###########################################################################################
    ## Pfad zur Datei sc_serv des SHOUTCasting-Servers (Dateinamen nicht mehr mit angeben)
    path_shoutcast="/home/shoutcast"
    ###########################################################################################
    ## Screens zur ▒berwachung des Servers verwenden (Aufrufbar mit screen -r sc1) ( 0 = Aus / 1 = Ein)
    use_screen="1"
    ###########################################################################################
    ## Speziellen Benuzter w▒hlen der den SHOUTCasting-Server starten soll (Erh▒ht die Sicherheit; User muss angelegt sein) ( 0 = Aus / 1 = Ein)
    use_user="0"
    username="shoutcast"
    ###########################################################################################
    #################################### KONFIGURATION ENDE ###################################
    
    case "${1}" in
            start)
                    ## if [ "${start}" != "1" ]; then
                    if [ ! -e "${path_shoutcast}/server.pid" ]
    
                            # Falls Screen aktiviert
                            if [ ${use_screen} -eq 1 ]; then
                                    if [ ${use_user} -eq 1 ]; then
                                            su -c '"${path_shoutcast}/sc_serv"' "${username}"
                                    else
                                            screen -dmS sc1 "${path_shoutcast}/sc_serv"
                                    fi
    
                                    # Wenn Kommando fehlerfrei, dann PID-File anlegen
                                    ## if [ "${?}" == "0" ]; then
                                    if [ $? -eq 0 ]; then
                                            echo "done"
                                            touch "${path_shoutcast}/server.pid"
                                    else
                                            echo "false"
                                    fi
    
                            # Falls Screen nicht aktiviert oder nicht eindeutig
                            else
                                    if [ ${use_user} -eq 1 ]; then
                                            su -c '"${path_shoutcast}/sc_serv"' "${username}"
                                    else
                                            "${path_shoutcast}/sc_serv"
                                    fi
    
                                    # Wenn Kommando fehlerfrei, dann Variable auf gestartet setzen
                                    if [ $? -eq 0 ]; then
                                            echo "done"
                                            touch "${path_shoutcast}/server.pid"
                                    else
                                            echo "false"
                                    fi
                            fi
                    else
                            echo "Der Server scheint nicht online zu sein, bitte erst starten!"
                    fi
            ;;
            status)
                    ##if [ ${start} -eq 1 ]; then
                    if [ -e "${path_shoutcast}/server.pid" ]; then
                            echo "Server scheint online zu sein!"
                    ##elif [ "${start}" == "0" ]; then
                    elif [ ! -e "${path_shoutcast}/server.pid" ]
                            echo "Server scheint offline zu sein!"
                    fi
            ;;
            stop)
                    ##if [ "${start}" == "1" ]; then
                    if [ -e "${path_shoutcast}/server.pid" ]; then
                            if [ ${use_screen} -eq 1 ]; then
                                    if [ ${use_user} -eq 1 ]; then
                                            su -c 'killall -9 "sc1" "${username}"'
                                    else
                                            killall -9 sc1
                                    fi
    
                                    if [ $? -eq 0 ]; then
                                            echo "done"
                                            rm -f "${path_shoutcast}/server.pid"
                                    else
                                            echo "false"
                                    fi
                            else
                                    if [ ${use_user} -eq 1 ]; then
                                            su -c 'killall -9 "${path_shoutcast}/sc_serv"'
                                    else
                                            killall -9 "${path_shoutcast}/sc_serv"
                                    fi
    
                                    if [ $? -eq 0 ]; then
                                            echo "done"
                                            rm -f "${path_shoutcast}/server.pid"
                                    else
                                            echo "false"
                                    fi
                            fi
    
                    ##elif [ "${start}" == "0" ]; then
                    elif [ ! -e "${path_shoutcast}/server.pid" ]; then
                            echo "Server scheint nicht online zu sein, bitte erst starten!"
                    fi
            ;;
            *)
                    echo "Syntax:"
                    echo "shoutcast (start|stop|status|restart)"
                    exit 2
            ;;
    esac
    Nun tritt der selbe Fehler aber allerdings immer noch in Zeile 57 auf.
    An was kann das denn nur liegen?

    MfG
    Michael

  6. #6
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Zitat Zitat von Fireball22 Beitrag anzeigen
    ...Nun tritt der selbe Fehler aber allerdings immer noch in Zeile 57 auf.
    An was kann das denn nur liegen?
    An Zeile 22. Da fehlt das "...; then" - war in der vorigen Version doch noch drin.

    Jan

  7. #7
    Registrierter Benutzer
    Registriert seit
    17.12.2007
    Beiträge
    40
    Ja vielen Dank, jetzt läuft endlich alles reibungslos, das Starten funktioniert auch ohne Probleme!
    Nur gibt es jetzt noch ein kleines Problem beim killen des Screens.
    Durch die Variablen löst sich der Pfad folgendermaßen auf, wodurch sich dieser Befehl im Script ergibt:
    Code:
    killall -9 "SCREEN -dmS sc1 /home/shoutcast/sc_serv
    Nur leider bekomme ich - auch wenn ich diesen Befehl manuell außerhalb des Scripts ausführe - diese Fehlermeldung:

    Code:
    : Datei oder Verzeichnis nicht gefunden
    An was liegt denn das?
    Das ist doch keine Datei und kein Verzeichniss, das ist doch ein Prozes... hmm...

    Oder gibt es noch eine saubere Möglichkeit einen bestimmten Screen mit seinem Namen zu killen?

    MfG
    Michael

  8. #8
    Registrierter Benutzer
    Registriert seit
    17.12.2007
    Beiträge
    40
    Eig. könnte ich das Problem mit dem killen des Screens viel einfacher lösen, wenn ich direkt die PID beim anlegen des Screens in die PID-File schreibe, die so oder so angelegt wird und eig. so ja nur leer wäre!
    Nur die Frage ist, wie ich die PID des Screens rausbekomm, weil ich nämlich mit $$ nur die PID der aktuellen Bash bekomme. Wenn ich diese allerdings kille, ist der Screen noch lange nicht weg.

    Wie bekomme ich also am einfachsten und zuverlästigsten die PID des Screens?

    MfG
    Michael

  9. #9
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Zitat Zitat von Fireball22 Beitrag anzeigen
    ... Durch die Variablen löst sich der Pfad folgendermaßen auf, wodurch sich dieser Befehl im Script ergibt:
    Code:
    killall -9 "SCREEN -dmS sc1 /home/shoutcast/sc_serv
    Wenn der Befehl tatsächlich so ausgegeben wird, dann fehlt da ein Anführungszeichen am Ende.

    Jan

  10. #10
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Zitat Zitat von Fireball22 Beitrag anzeigen
    Nur die Frage ist, wie ich die PID des Screens rausbekomm, weil ich nämlich mit $$ nur die PID der aktuellen Bash bekomme. Wenn ich diese allerdings kille, ist der Screen noch lange nicht weg...
    Guck Dir mal pidof an. Auch mit den Optionen von ps kannst Du mal experimentieren (ggf. im Zusammenhang mit grep).

    Jan

  11. #11
    Registrierter Benutzer
    Registriert seit
    17.12.2007
    Beiträge
    40
    Ja stimmt, mit pidof wollte ich es auch schon versuchen und dann danach noch zum suchen einen "Regulären Ausdruck" verwenden, dass er nach beiden Parametern SCREEN und SC1 sucht, da er bis jetzt nur mit Suchprinzip ODER sucht und er mir somit alle PIDs von allen Screens ausgeben würde.
    Laufen dann mehrere Screens im System, würde das Script entweder den falschen killen oder bei einer Schleife alle.

    Da es aber mit dem Regulären Ausdruck nicht funktioniert hat, habe ich es wie folgt versucht:
    Code:
    screen -r sc1 -X kill
    Das bringt allerdings nur teilweise Erfolg. Damit killt er zwar den Screen selber, aber aus irgend einem Grund killt er nicht die Prozesse die auf dem Screen laufen.

    So habe ich es soeben auch nochmal probiert:
    Code:
    killall -9 'SCREEN -dmS sc1 "${path_shoutcast}/sc_serv"'
    Allerdings intepretiert er diese Anweisung mit SCREEN... als Befehl und nicht nur als normalen Text. Wie kann ihm dass den beibringen, dass er das als Text intepretiert?
    Eig. sollte er dass doch schon durch die Anführungszeichen wissen, oder nicht?

    Nen guten Rutsch ins neue Jahr 2008 wünsch ich euch allen! =)

    MfG
    Michael

  12. #12
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Moin,

    Zitat Zitat von Fireball22 Beitrag anzeigen
    ...So habe ich es soeben auch nochmal probiert:
    Code:
    killall -9 'SCREEN -dmS sc1 "${path_shoutcast}/sc_serv"'
    Allerdings intepretiert er diese Anweisung mit SCREEN... als Befehl und nicht nur als normalen Text. Wie kann ihm dass den beibringen, dass er das als Text intepretiert?
    Eig. sollte er dass doch schon durch die Anführungszeichen wissen, oder nicht?
    In einfache Hochkommata eingeschlossener Text wird durch die Shell nicht ausgewertet, die Variable ${path_shoutcast} wird also nicht durch den Inhalt ersetzt. Versuchs mal so:
    Code:
     killall -9 "SCREEN -dmS sc1 \"${path_shoutcast}/sc_serv\""
    Jan

    EDIT: Noch 2 allgemeine Tipps für die Fehlersuche in Shell-Scripts:
    1. Setze an den Anfang des Scripts eine "set -x", dann werden alle Befehle so angezeigt, wie sie durch die Shell abgefeuert werden.
    2. Wenn Du nicht sicher bist, wie ein Befehl nachher aussieht, kannst Du Dir auch so helfen, dass Du zuerst ein "echo" vor den auszuführenden Befehl setzt, dann siehst Du auch meist, was passieren würde.
    Geändert von jan61 (01-01-2008 um 14:55 Uhr)

  13. #13
    Registrierter Benutzer
    Registriert seit
    17.12.2007
    Beiträge
    40
    Vielen Dank für deine Hilfe!

    Ich habe jetzt mal eben ein "set -x" an den Anfang des Scripts gesetzt und es ohne Hochkommata probiert, nur allerdings erhalte ich immer noch die selber Fehlermeldung.

    Das Script zeigt mir nun folgendes:

    Code:
    h852677:~# ./DeinScript_new stop
    + path_shoutcast=/home/shoutcast
    + use_screen=1
    + use_user=0
    + username=shoutcast
    + '[' -e /home/shoutcast/server.pid ']'
    + '[' 1 -eq 1 ']'
    + '[' 0 -eq 1 ']'
    + killall -9 'SCREEN -dmS sc1 "/home/shoutcast/sc_serv"'
    SCREEN -dmS sc1 "/home/shoutcast/sc_serv": Datei oder Verzeichnis nicht gefunden
    + '[' 1 -eq 0 ']'
    + echo false
    false
    Leider interpretiert er jedoch immer noch SCREEN als Befehl.

    Wie lässt sich denn dass nur verhindern?

    MfG
    Michael

  14. #14
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Zitat Zitat von Fireball22 Beitrag anzeigen
    ...Leider interpretiert er jedoch immer noch SCREEN als Befehl...
    Liese Dir mal die man-Page von killall durch (habe ich eben auch gemacht ;-):
    ...If the command name contains a slash (/), processes executing that particular file will be selected for killing, independent of their name...
    So kannst Du den killall also nicht aufrufen. Der laufende Prozess wäre in Deinem Beispiel SCREEN (aber überzeuge Dich z. B. per ps davon, dass der Prozess tatsächlich so in der Prozessliste steht), dann versuchs mal einfach mit dem Namen des Executables (also "killall SCREEN"), und hau nicht gleich per SIGKILL (-9) drauf, sondern gib ihm ne Chance, sich sauber runterzufahren.

    Wenn es Kindprozesse des SCREEN gibt, dann nimm die Option -g des killall, damit erlegst Du die gesamte Prozessgruppe.

    Jan

  15. #15
    Registrierter Benutzer
    Registriert seit
    17.12.2007
    Beiträge
    40
    Vielen Dank für deine Antwort!
    Genau das hab ich mir schon fast gedacht, dass ist mir beim probieren auch immer wieder
    aufgefallen!

    Jedoch ergibt folgender Befehl folgende Fehlermeldung:
    Code:
    h852677:~# killall -g SCREEN
    SCREEN: Kein Prozess abgebrochen
    Ich habe gestern auch nochmals den ganze Abend rumgetüftelt und ich bin auf folgenden - womöglich vorherigen Fehler - im Script gestoßen.
    Denn vorher wurde wurde nämlich der Shoutcast-Server !!im!! Screen so gestartet:
    Code:
    screen -dmS sc1 "${path_shoutcast}/sc_serv"
    Nur allerdings bin ich mir gar nicht sicher ob er den Befehl danach auch innerhalb des Screens ausgeführt hat und nicht extra, weil eig. überhaupt keine Verbindung zwischen dem Screen und dem Befehl besteht.

    Dieses wollte ich durch folgenden Aufruf verbessern:
    Code:
    screen -dmSX sc1 "${path_shoutcast}/sc_serv"
    Allerdings beschwert er sich nun über folgendes:
    No screen session found.

    Lässt sich das Problem noch beheben, würde sich eig. der Screen inkl. Shoutcast-Server ganz einfach über screen -r sc1 -X kill beenden lassen, oder?

    MfG
    Michael

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •