Startscript @ HLDS

XET!C

XET!C

Tripel-As
Hi, ich hab probleme mit dem startscript. Der sagt mir ich habe ein ' oder `` vergessen, aber ich finde nix

Code:
#!/bin/sh
#

NAME=EoS'S Server
DESC="www.EoSS.de.vu"
PARAMS="-game cstrike +maxplayer 12 -port 27015 +map de_aztec -autoupdate"
DIR=/home/HLDS
SCRIPT=hlds_run

DAEMON=$DIR/$SCRIPT
case "$1" in
start)
echo "Starting $DESC: $NAME"
cd $DIR
screen -d -m -S $NAME $DAEMON $PARAMS
;;

stop)
if [[ `screen -ls | grep $NAME` ]]
then
echo -n "Stopping $DESC: $NAME"
kill `ps aux | grep SCREEN | grep $NAME | cut -d" " -f 6 | awk -F .
'{print $1}'|awk '{print $1}'`
echo "... done."
else
echo "Couldn´t find a running $DESC"
fi
;;

restart)
if [[ `screen -ls | grep $NAME` ]]
then
echo -n "Stopping $DESC: $NAME"
kill `ps aux | grep SCREEN | grep $NAME | cut -d" " -f 6 | awk -F .
'{prit $1}'| awk '{print$1}'`
echo "... done."
else
echo "Couldn´t find a running $DESC"
fi

echo -n "Starting $DESC: $NAME"
cd $DIR
screen -d -m -S $NAME $DAEMON $PARAMS
echo "... done."
;;

*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac

exit 0
 
Ahh danke. Ich hab ich voll übersehen. Aber wenn ich start mache und dann stop sagt der mir:
h947778:/home/HLDS # ./start stop
grep: Server: No such file or directory
Couldn´t find a running www.EoSS.de.vu
 
Wenn Du Leerzeichen in $NAME hast, musst Du diese Variable mittels "..." als String zusammenfassen. In der Art:

Code:
if [[ `screen -ls | grep "$NAME"` ]]
 
hmm hab jetzt irgendwie gemerkt das ich was falsch im script habe:
im stop und im restart segment
h947778:/home/HLDS # ./Run_Pub stop
Stopping www.EoSS.de.vu: EoS'S-ServerUsage: awk [POSIX or GNU style options] -f progfile [--] file ...
Usage: awk [POSIX or GNU style options] [--] 'program' file ...
POSIX options: GNU long options:
-f progfile --file=progfile
-F fs --field-separator=fs
-v var=val --assign=var=val
-m[fr] val
-W compat --compat
-W copyleft --copyleft
-W copyright --copyright
-W dump-variables[=file] --dump-variables[=file]
-W gen-po --gen-po
-W help --help
-W lint[=fatal] --lint[=fatal]
-W lint-old --lint-old
-W non-decimal-data --non-decimal-data
-W profile[=file] --profile[=file]
-W posix --posix
-W re-interval --re-interval
-W source=program-text --source=program-text
-W traditional --traditional
-W usage --usage
-W version --version

To report bugs, see node `Bugs' in `gawk.info', which is
section `Reporting Problems and Bugs' in the printed version.

gawk is a pattern scanning and processing language.
By default it reads standard input and writes standard output.

Examples:
gawk '{ sum += $1 }; END { print sum }' file
gawk -F: '{ print $1 }' /etc/passwd
./Run_Pub: line 24: {print $1}: command not found
kill: usage: kill [-s sigspec | -n signum | -sigspec] [pid | job]... or kill -l [sigspec]
... done.

??? weis aber nicht was er von mir will
 
Ok, Du hast offensichtliche keine Ahnung im Umgang mit Sonderzeichen in Variablen. Deswegen empfehle ich Dir, diese einfach wegzulassen; also hier das Apostroph und Leerzeichen.

Weiterhin dürfen Befehle nicht einfach umgebrochen werden. Wenn man diese mehrzeilig schreiben will, muss man das Newline mit \ escapen. In Deinem Fall:

Code:
kill `ps aux | grep SCREEN | grep $NAME | cut -d" " -f 6 | awk -F . \
'{print $1}'|awk '{print $1}'`

Über den programmiertechnischen Inhalt dieser Zeile schweige ich mal, besonders elegant ist sie nicht.

Gruss, Xanti
 
HeHe thx Xanti...was wäre ich nur ohne dich
.
.
.
EDIT (autom. Beitragszusammenführung) :
.

Jetzt krieg ich das rein
h947778:/home/HLDS # ./Run_ESL stop
Stopping www.EoSS.de.vu: EoS'S-ESL_Serverkill: usage: kill [-s sigspec | -n signum | -sigspec] [pid | job]... or kill -l [sigspec]
... done.
 
Zuletzt bearbeitet:
Poste nochmal Dein Skript, wie es jetzt aussieht.
 
Mein komplettes SS

#!/bin/sh
#

NAME="EoS'S-ESL_Server"
DESC="www.EoSS.de.vu"
PARAMS=" -game cstrike +maxplayers 12 -port 27016 +map de_aztec +servercfgfile serverESL.cfg"
DIR=/home/HLDS
SCRIPT=hlds_run

DAEMON=$DIR/$SCRIPT
case "$1" in
start)
echo "Starting $DESC: $NAME"
cd $DIR
screen -d -m -S $NAME $DAEMON $PARAMS
;;

stop)
if [[ `screen -ls | grep $NAME` ]]
then
echo -n "Stopping $DESC: $NAME"
kill `ps aux | grep SCREEN | grep $NAME | cut -d" " -f 6 | awk -F . \
'{print $1}'|awk '{print $1}'`

echo "... done."
else
echo "Couldn´t find a running $DESC"
fi
;;

restart)
if [[ `screen -ls | grep $NAME` ]]
then
echo -n "Stopping $DESC: $NAME"
kill `ps aux | grep SCREEN | grep $NAME | cut -d" " -f 6 | awk -F . \

'{prit $1}'| awk '{print$1}'`
echo "... done."
else
echo "Couldn´t find a running $DESC"
fi

echo -n "Starting $DESC: $NAME"
cd $DIR
screen -d -m -S $NAME $DAEMON $PARAMS
echo "... done."
;;

*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac

exit 0
 
Arg... Apostroph aus EoS'S-ESL_Server entfernen!

Ausserdem steht da noch irgendwo prit, das muss print heißen. Weiterhin kannst Du mal posten, was bei

Code:
ps aux | grep SCREEN | grep $NAME

in die Shell eingegeben rauskommt ($NAME entsprechend gesetzt).
 
Hmm... habs so eingegeben
h947778:/home/HLDS # ps aux | grep SCREEN | grep $EoS'S-ESL_Server
> ps aux | grep SCREEN | grep $EoS'S-ESL_Server
root 1518 0.0 0.0 2424 840 ? Ss Dec13 0:12 SCREEN -d -m -S EoS'S-ESL_Server /home/HLDS/hlds_run -game cstrike +maxplayers 12 -port 27016 +map de_aztec +servercfgfile serverESL.cfg
 
oder könnt ihr mir ein befehl sage.Womit ich den server sofort kille ohne das startscript
also wenn ich screen -ls eingebe, dann kommt das [habe 2 CS-Server laufen, aber mit dem geleichen namen]
h947778:~ # screen -list
There are screens on:
27239.EoS'S-Server (Detached)
27296.EoS'S-Server (Detached)
32592.EoS'S-Server (Detached)
376.EoS'S-Server (Detached)
691.EoS'S-Server (Detached)
5 Sockets in /var/run/screens/S-root.
 
Zuletzt bearbeitet:
Hi Leute ich habe auch ein ähnliches Problem:
Ich benutze folgendes Script:
case "$1" in
start)
if [[ `screen -ls |grep $NAME` ]]
then
echo "HLDS is already running!"
else
echo "Starting $DESC: $NAME"
cd $DIR; screen -m -d -S hlds ./$DAEMON $PARAMS
fi
;;

Wenn $NAME schon vorhanden ist sollte er ja in den then Zweig springen, das tut er aber nicht sondern geht immer den else Zweig.
In $NAME steht sowas wie "hlds-server2-5on5".

Ich habe schon verschiedenste Klammersetzungen probiert aber bisher immer daran gescheitert.
Jemand vielleicht eine Idee?
 

Ähnliche Themen

Switche abfragen über Script

Skript soll nicht doppelt laufen... kill pkill pid cron

Verschlüsseltes Backup-Script mit rsync

Shell Skript beschleunigen

Adressvergabe in anderen Subnets

Zurück
Oben