• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Startscript

sandduene

Newbie
Hoffe man kann mir helfen, bin auf diesem Gebiet relativ neu.

Habe einen Dedicatet Server mit Suse Linux 9.3, es läuft Teamspeak und verschiedene Spiele drauf.
Ravenshield z.b. musste ich mit Wine emulieren das funzt eigentlich gut nur ich muss das Spiel mindestens einmal am Tag neu starten um Lags zu verhindern und dort kommt mein Problem
dachte mache das mit einem Script aber irgendwie funktuioniert das leider nicht.
habe den start.sh
Code:
#!/bin/bash 
cd /home/gamer/RVS/Server/System/

# Start server now! 
screen wine ucc server
dann denn stop.sh
Code:
#!/bin/sh 
screen wine ucc server quit
und zum restart
Code:
./Stop.sh 
./Start.sh
nur leider bekomme ich wenn ich ./start.sh eingebe
No such File or Directory

Mein Ziel ist es eigentlich den Server einmal am Tag zu restarten
gebe ich die Befehlszeile
Code:
screen wine ucc server
startet der Server ohne Probleme
Hoffe es hat jemand ne Lösung für mich Danke schon einmal im Vorraus
 

sparrow

Member
Ist die Datei nun start.sh oder Start.sh?
Linux unterscheidet zwischen Groß- und Kleinschreibung.

Ist das Script als ausführbar makiert? Also sind die Attribute gesetzt?
 
OP
S

sandduene

Newbie
zur Zeit ist die Datei start.sh habe aber mit Groß und Kleinschreibung probiert, Attribute habe ich chmod 777 gemacht und zum probieren als Root ausgeführt
 

admine

Ultimate Guru
sandduene schrieb:
nur leider bekomme ich wenn ich ./start.sh eingebe
No such File or Directory
Und du stehst beim Absetzen der Befehle auch in dem Verzeichnis, indem die start.sh liegt ?

Besser wäre es IMHO, wenn du die Scripte mit eindeutigem Namen in ein Verzeichnis legst, welcher in $PATH vorhanden ist.
Dann ersparst du dir das ./ vor dem Script.
 
OP
S

sandduene

Newbie
mit dem Pfad werde ich heute abend ausprobieren , die Rechte sind nur zum Test auf 777 um evtl Fehler von vornhinein abzublocken :). Weil habe die Daten zu Testzwecken auf meinem HomeLinux Server zu laufen um denn richtigen Serrver nicht zu gefährden ;-)
 
1. "cd /foo/bar" vermeidet man sowieso in Scripten.
Man verwenden möglichst immer den vollständigen Pfad
Aso:
Code:
#!/bin/bash 
screen wine /home/gamer/RVS/Server/System/ucc server

2. Wenn du schon 'screen' verwendest, dann würde ich den a. "detachen" und b. mit einem Namen/Titel versehen, damit man ihn wieder "reattachen" kann.
Also:
Code:
screen -A -d -m -t Name foo bar

3. Ich kenne mich weder mit gameservern, wine oder screen wirklich aus, aber mit deinem stop-Script öffnest du doch eine 2. Screen-Session (mit dem quit-Befehl)? - Ob das funktioniert??
Du müsstest eigentlich deine Screen-Session aus dem Startscript "reattachen" ...
Also:
Code:
screen -d -r -t Name
Oder gleich den Screen beenden, damit sollte dann auch der Server weg sein.
Das schaue ich jetzt aber nicht mehr nach: man screen ist dein Freund :wink:

4. Eleganter wäre das ganze mit 'case'
Also:
Code:
#!/bin/sh
case $1 in
  start)
    # Hier der Startbefehl
  ;;
  stop)
    # Hier der Stopbefehl
  ;;
  *)
    echo "Usage: $0 {start|stop}";
  ;;
esac
Aufruf dann mit 'script start|stop'
 
OP
S

sandduene

Newbie
Danke ersteinmal werde mir heute abend mal die Tipps nach der Reihe durchgehen und hoffen das ich das zum laufen bekomme:)
 
Oben