Wo ist der Fehler?

W

WRLEV

Jungspund
Hi!

Habe nen Script geschrieben, um einen Gameserver zu starten. Die Datei server.sh liegt im Verzeichnis System, wo auch alle anderen Dateien liegen, die er umbenennen und starten soll. Das Script sieht folgender Maßen aus:

#!/bin/bash

# Lauf ewig
while [ true ];
do
mv Server.ini Server.old &&
echo Renamed Server.ini
cp ServerADVER.ini Server.ini && -> Diese Zeile ändern
echo Neue ini-Datei kopiert
echo Starte Server...
./ucc server
echo starte neu
done

Ich bekomme folgende Fehlermeldungen, wenn ich das Script starte:

Server.ini not such directory
ServerADVER not such directory
ucc not such directory

Was habe ich an diesem Script falsch gemacht?

MfG
WLREV
 
Und du bist dir 100%ig sicher dass die Datei "Server.ini" in dem verzeichnis liegt?
 
Die Server.ini, wie die ServerADVER.ini liegen im System-Verzeichnis.
 
Und von wo aus startest du das Skript?
Das Skript mag zwar im selben Verzeichnis liegen aber richitg interessant ist nur das Verzeichnis von dem aus du das Skript startest!
 
in skripten epfehle ich immer absoulte-pfade zu verwenden :]
also: /pfad/zu/Server.ini
das gleiche auch für "ucc".

dein skript würde nur funktionieren wenn du das skript in dem verzeichniss aufrufst in dem sich diese 3 dateien befinden ...sonst nicht.
 
die dateien: Server.ini, ServerADVER.in und ucc müssen dann auch ALLE unter dem root-verzeichnis sein....was aber eine "unschöne" lösung ist.
 
Kenne mich so gut in Linux aus! Wie starte ich das Script denn aus dem Systemverzeichnis?
 
woher soll hier jemand wissen wie "sehr" du dich mit linux auskennst? schlißlich gibt ja hier einige die dir versuchen zu helfen.
was bezeichnest du als "systemverzeichnis"?

nehmen wir mal an du hast ein verzeichniss /opt/gameserver in dem das skript und alle diese dateien liegen dann sollte das skript so aussehen:

#!/bin/bash
# Lauf ewig
cd /opt/gameserver

while [ true ];
do
mv Server.ini Server.old &
echo Renamed Server.ini
cp ServerADVER.ini Server.ini &
echo Neue ini-Datei kopiert
echo Starte Server...
./ucc server
echo starte neu
done

quick & dirty :devil:

der aufruf wäre dann: /opt/gameserver/skriptname.sh (vorrausgesetzt das skript hat ausführbare-rechte ... chmod 755)
 
Also ein Gameserververzeichnis habe ich nicht. Im root-Verzeichnis befindet sich das Verzeichnis System und dort liegen die Dateien drin, auch die server.sh.
Und die server.sh sollte ich im Systemverzeichnis starten. Nur wie wechsle ich vom rootverzeichnis ins Systemverzeichnis.

Greetz
WRLEV
 
1. mit cd System wechselst du vom root ins Verzeichnis "System" (wenn du dich im root verzeichniss "/" befindest.

2 aufrufen tust das skript mit ./server.sh
 
while true anstelle von while [ true ]
reicht, somit ersparst du die den test Aufruf.
 
Nun habe ich folgendes Problem, daß er das ./ucc server nicht kennt.
Kommt folgende Meldung

ucc not such directory

Ansonsten funktioniert alles.
 
Wechsle in deinem Skript in das Verzeichnis in dem die Dateien liegen.

Code:
#!/bin/bash

cd /System

starte dein Skript mit

/System/server.sh
 
Habe ich gemacht nur der Befehl ./ucc server wird nicht verwertet.
 
was sagt ein:
ls -l /System

was gibt folgender Befehl aus?
file /System/ucc
 
Folgendes kommt bei file /System/ucc

/System/ucc: Can't stat `/System/ucc' (No such file or directory)

bei ls l /System kommt dies:

/bin/ls: /System: No such file or directory
 
hast du auch wirklich ein verzeichniss das sich "System" nennt (beachte gross-/kleinschreiweise)!?

was sagt ls -la / ?
 
Der Befehl ls - la/ ergibt folgendes:

ls -la /
total 181
drwxr-xr-x 22 root root 4096 Jul 2 01:57 .
drwxr-xr-x 22 root root 4096 Jul 2 01:57 ..
drwxr-xr-x 2 root root 4096 May 13 10:02 bin
drwxr-xr-x 4 root root 1024 Jul 2 07:07 boot
drwxr-xr-x 2 root root 4096 May 10 16:24 command
drwxr-xr-x 31 root root 73728 Jul 2 01:57 dev
drwxr-xr-x 40 root root 4096 Jul 2 01:57 etc
drwxr-xr-x 40 root root 4096 Jun 24 13:03 home
drwxr-xr-x 8 root root 4096 May 18 17:34 lib
drwx------ 2 root root 16384 Apr 20 17:42 lost+found
drwxr-xr-x 4 root root 4096 Oct 2 2003 media
drwxr-xr-x 2 root root 4096 Oct 2 2003 mnt
drwxr-xr-x 3 root root 4096 Oct 2 2003 opt
drwxr-xr-t 3 root root 4096 May 10 16:24 package
dr-xr-xr-x 105 root root 0 Jul 2 01:57 proc
-rw------- 1 root root 1920320 Jul 2 01:56 quota.user
drwx------ 20 root root 4096 Jul 5 15:35 root
drwxr-xr-x 3 root root 4096 Jun 18 09:11 sbin
drwxr-xr-x 2 root root 4096 May 10 16:24 service
drwxr-xr-x 4 root root 4096 Oct 2 2003 srv
drwxrwxrwt 7 root root 4096 Jul 6 10:30 tmp
drwxr-xr-x 12 root root 4096 May 13 09:57 usr
drwxr-xr-x 15 root root 4096 Jul 2 01:36 var

Das System-Verzeichnis liegt im Verzeichnis root.

Greetz
WRLEEV
 
Hm, es gibt da doch den Unterschied zwischen / und /root
/root ist das homeverzeichnis vom Root.
 

Ähnliche Themen

Switche abfragen über Script

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

script sshpass

Verschlüsseltes Backup-Script mit rsync

Grafische Anzeige der Temperatur

Zurück
Oben