Denkfehler. Was mache ich Falsch.

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Zeeanq
Beiträge: 1
Registriert: 09.08.2014 14:19:24

Denkfehler. Was mache ich Falsch.

Beitrag von Zeeanq » 09.08.2014 14:23:23

Ich habe eine Script im WWW gefunden was ich in meinem Server einbinden will.

Das Script sieht so aus:

Code: Alles auswählen

#!/bin/bash
INSTANZ="Beispiel-Programm"
BPDIR=/opt/programme/beispiel
Pidfile=/opt/programme/beispiel/bsp.pid

if [ -f $Pidfile ]
then
	Pid=`cat $Pidfile`
fi

case "$1" in
'start')
		if [ -f $Pidfile ] ; then
				if test `ps -e | grep -c $Pid` = 1; then
						echo "Not starting $INSTANZ - instance already running with PID: $Pid"
				else
						echo "Starting $INSTANZ"
						cd $BPDIR
						nohup ./bsp.sh &> /dev/null &
						echo $! > $Pidfile
				fi
		else
				echo "Starting $INSTANZ"
				cd $BPDIR
				nohup ./bsp.sh &> /dev/null &
				echo $! > $Pidfile
		fi
		;;

'stop')
		if [ -f $Pidfile ] ; then
				echo "stopping $INSTANZ"
				kill -15 $Pid
		else
				echo "Cannot stop $INSTANZ - no Pidfile found!"
		fi
		;;

'restart')
		$0 stop
		sleep 5
		$0 start
		;;

'status')
		if [ -f $Pidfile ] ; then
				if test `ps -e | grep -c $Pid` = 0; then
						echo "$INSTANZ not running"
				else
						echo "$INSTANZ running with PID: [$Pid]"
				fi
		else
				echo "$Pidfile does not exist! Cannot process $INSTANZ status!"
				exit 1
		fi
		;;

*)
		echo "usage: $0 { start | stop | restart | status }"
		;;

esac
exit 0
Er soll aber 2 Terminals öffnen in denen er zwei unterschiedliche executables startet.
So habe ich gedacht aber wo ist nun der Fehler denn er startet nur die eine INSTANZ und das in ein und dem selben Terminal.

Code: Alles auswählen

#!/bin/bash
INSTANZ= cd /home/zeealtis2/arma3/game && wine arma3server.exe -config=/server.cfg -basic=/basic.cfg -mod="@Arma2NET;@life_server"
INSTANZ2=cd /home/zeealtis2/arma3/game/bec && wine Bec.exe
BPDIR=/home/zeealtis2/arma3/game
Pidfile=/home/zeealtis2/arma3/game/loas.pid
Pidfile2=/home/zeealtis3/arma3/game/loasb.pid

if [ -f $Pidfile ]
then
	Pid=`cat $Pidfile`
fi

if [ -f $Pidfile2 ]
then
	Pid2=`cat $Pidfile2`
fi


case "$1" in
'start')
		
		if [ -f $Pidfile ] ; then
				if test `ps -e | grep -c $Pid &&` = 1; then
						echo "Not starting $INSTANZ - Server already running with PID: $Pid"
				else
						terminal -e
						echo "Starting $INSTANZ Sever"
						cd $BPDIR
						nohup ./loas.sh &> /dev/null &
						echo $! > $Pidfile
		
				fi
		else
				terminal -e
				echo "Starting $INSTANZ Server"
				cd $BPDIR
				nohup ./loas.sh &> /dev/null &
				echo $! > $Pidfile
		fi

		if [ -f $Pidfile2 ] ; then
				if test `ps -e | grep -c $Pid2 &&` = 1; then
						echo "Not starting $INSTANZ2 - BEC already running with PID: $Pid"
				else
						terminal -e
						echo "Starting $INSTANZ2 BEC"
						cd $BPDIR
						nohup ./loas.sh &> /dev/null &
						echo $! > $Pidfile2
		
				fi
		else
				terminal -e
				echo "Starting $INSTANZ BEC"
				cd $BPDIR
				nohup ./loas.sh &> /dev/null &
				echo $! > $Pidfile2
		fi

		;;

'stop')
		if [ -f $Pidfile ] ; then
				echo "Stopping $INSTANZ"
				kill -15 $Pid
		else
				echo "Cannot stop $INSTANZ - no Pidfile found!"
		fi

		if [ -f $Pidfile2 ] ; then
				echo "Stopping $INSTANZ2"
				kill -15 $Pid2
		else
				echo "Cannot stop $INSTANZ2 - no Pidfile found!"
		fi
		;;

'restart')
		$0 stop
		sleep 5
		$0 start
		;;

'status')
		if [ -f $Pidfile ] ; then
				if test `ps -e | grep -c $Pid` = 0; then
						echo "$INSTANZ Server not running"
				else
						echo "$INSTANZ Server running with PID: [$Pid]"
				fi
		else
				echo "$Pidfile does not exist! Cannot process $INSTANZ Server status!"
				exit 1
		fi

		if [ -f $Pidfile2 ] ; then
				if test `ps -e | grep -c $Pid2` = 0; then
						echo "$INSTANZ2 BEC not running"
				else
						echo "$INSTANZ2 BEC running with PID: [$Pid]"
				fi
		else
				echo "$Pidfile2 does not exist! Cannot process $INSTANZ2 BEC status!"
				exit 1
		fi
		;;

*)
		echo "usage: $0 { start | stop | restart | status }"
		;;

esac
exit 0
Muss ich eventuell ein Bash Script schreiben was 2 verschiedene Bash Scripts aufrufen/beenden kann?

theAllf
Beiträge: 54
Registriert: 16.09.2013 19:06:08

Re: Denkfehler. Was mache ich Falsch.

Beitrag von theAllf » 11.08.2014 11:22:06

Ganz verstehe ich jetzt nicht was es mit der Variablen INSTANZ auf sich hat, aber im ersten Skript würde ich vermuten, dass es sich hierbei nur um einen Namen handelt.
Im zweiten Skript hast du allerdings komplette Parameteraufrufe drinnen. Tatsächlich startest du allerdings nur zwei mal das Skript loas.sh.
Ich denke daher, dass die Parameter aus deiner INSTANZ bzw. deiner INSTANZ2 besser nach dem nohup aufgehoben wären bzw. innerhalb des Skripts loas.sh.
Zudem fehlen die Hochkommas nach den beiden INSTANZ-Variablen und nach dem "=" darf kein Leerzeichen sein.

Antworten