[gelöst] Fehler in screen start/stopp Skript

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
serecords
Beiträge: 124
Registriert: 14.11.2012 21:53:37

[gelöst] Fehler in screen start/stopp Skript

Beitrag von serecords » 09.06.2014 23:36:30

Guten Abend,

ich habe ein Skript, welches durch Übergabe von start|stop|status|restart, ein Programm in einem Screen öffnet, beendet, den Status anzeigt oder halt neu startet. So weit ist denk ich auch klar :)
Die Funktionen start und status funktionieren auch. Nur stop und restart machen Probleme. Das Kuriose, für mich, dabei ist aber, wenn ich das Skript folgendermaßen aufrufe:

Code: Alles auswählen

./screen-test.sh stop
bekomme ich diesen Fehler und es funktioniert nicht

Code: Alles auswählen

./screen-test.sh: 26: ./screen-test.sh: [[: not found
grep: ]]: Datei oder Verzeichnis nicht gefunden
Starte ich es hingegen so:

Code: Alles auswählen

bash -x ./screen-test.sh stop
läuft es ohne Fehlermeldung durch und es funktioniert auch.

Vielleicht ist es auch die späte Stunde...

Jedenfalls würde ich mich freuen, wenn mal jemand drüber schauen könnte.


Hier das Skript:

Code: Alles auswählen

#!/bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin
DIR=/home/test
DAEMON=$DIR/test
PARAMS="" 
NAME="testscreen"
DESC="This is a test"
#
case "$1" in
 start)
   echo "Starting $DESC: $NAME"
   if [ -e $DIR ];
   then
    cd $DIR
    screen -d -m -S $NAME $DAEMON $PARAMS
   else echo "No such directory: $DIR!"
   fi
   ;;
#
 stop)
   if [[ `screen -ls |grep $NAME` ]]
   then
       echo -n "Stopping $DESC: $NAME"
       kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'`
       echo " ... done."
   else
       echo "Coulnd't find a running $DESC"
   fi
   ;;
#
 restart)
   if [[ `screen -ls |grep $NAME` ]]
   then
       echo -n "Stopping $DESC: $NAME"
       kill `screen -ls |grep $NAME |awk -F . '{print $1}'|awk '{print $1}'`
       echo " ... done."
   else
       echo "Coulnd't find a running $DESC"
   fi
   
   echo -n "Starting $DESC: $NAME"
   cd $DIR
   screen -d -m -S $NAME $DAEMON $PARAMS
   echo " ... done."
   ;;
 #
 status)
   ps aux | grep -v grep | grep $DAEMON > /dev/null
   CHECK=$?
   [ $CHECK -eq 0 ] && echo "Server laeuft" || echo "Server ist down"
   ;;
 #
 *)
   echo "Usage: $0 {start|stop|status|restart}"
   exit 1
   ;;
esac

exit 0
Zuletzt geändert von serecords am 14.07.2014 15:42:12, insgesamt 1-mal geändert.

DeletedUserReAsG

Re: Fehler in screen start/stopp Skript

Beitrag von DeletedUserReAsG » 09.06.2014 23:41:57

Könnte daran liegen, dass sh (aka Debiandash), festgelegt in der ersten Zeile deines Scriptes, mit ›[[ ]]‹ nix anfangen kann, und du es entweder kompatibel schreiben, oder als Shell die Debianbash eintragen müsstest.

serecords
Beiträge: 124
Registriert: 14.11.2012 21:53:37

Re: Fehler in screen start/stopp Skript

Beitrag von serecords » 09.06.2014 23:45:35

Ja natürlich, genau das war es.
Daher im Nachhinein eigentlich auch logisch das es mit bash -x geht, weil dort ja bash statt der angegebenen sh genutzt wird.
Dann schieb ich das doch mal auf die späte Stunde ;)

Danke dir.

Antworten