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
Code: Alles auswählen
./screen-test.sh: 26: ./screen-test.sh: [[: not found
grep: ]]: Datei oder Verzeichnis nicht gefunden
Code: Alles auswählen
bash -x ./screen-test.sh stop
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