Bash scrip für Server start

Celeborn

Lieutenant
Registriert
Sep. 2006
Beiträge
582
Hallo Zusammen,

ich komme aktuell nicht weiter.

Ich wollte ein Server Start Script schreiben.

#!/bin/sh
cd $HOME/gamesrv/starbound/linux
screen -dmS starbound sh starbound_server.sh


nun bekomme ich aber diese meldung

starbound.sh: 2: cd: can't cd to $HOME/gamesrv/starbound/linux

Nun ist die Frage was mache ich falsch.

Das Script liegt in ein Ordner und $Home/batch

Gruß
 
Wie wird das Skript ausgeführt? Von Hand in der Shell?
Je nach Kontext kann $HOME natürlich ein anderer Ort sein, z.B. bei einem Cron-Job wäre das /root.
 
Hallo,

$HOME ist eine Variable, wenn du diese nicht nicht festlegst, kann er auch den Pfad nicht finden.

HOME=/foo/bar

Aber man kann auch, wie oben schon angemerkt den absoluten Pfad nehmen.
 
Erstens ist die Frage wer das Script ausführt, in dessen Homeverzeichnis wird es dann gesucht.
Bei dir scheint es der falsche User zu sein. Und im Normalfall würde ich eher ~ statt $HOME nehmen.

Ansonsten würde ich je nachdem ob dein System mit sysvinit oder systemd läuft das mit einen initscript oder einer systemdunit erledigen.
 
Ich habe nun den Pfad Absolute konfiguriert.

#!/bin/sh
cd home/ng/gamesrv/starbound/linux
screen -dmS starbound sh starbound_server.sh



dann erscheint die gleiche meldung.

starbound.sh: 2: cd: can't cd to home/ng/gamesrv/starbound/linux

Ausführen tuhe ich ihn über Putty
in aus dem ordner wo die datei liegt.

user@server:~/gamesrv/batch$ sh starbound.sh
 
Muffknutscher schrieb:
Hallo,

$HOME ist eine Variable, wenn du diese nicht nicht festlegst, kann er auch den Pfad nicht finden.

HOME=/foo/bar

Aber man kann auch, wie oben schon angemerkt den absoluten Pfad nehmen.

Das ist falsch, da verschiedene Variablen schon im Standard vom System vordefiniert werden, wie z.B. $HOME.
Wie führst du das Skript aus?
Dass du den Fehler "starbound.sh: 2: cd: can't cd to $HOME/gamesrv/starbound/linux" bekommst ist sehr merkwürdig, da die Variable entweder aufgelöst oder leer sein sollte, je nach Fehler.
 
cd home/.... ist relativ, du mußt schon /home/... benutzen.
 
  • Gefällt mir
Reaktionen: horstle, Raijin und GTrash81
Groug schrieb:
cd home/.... ist relativ, du mußt schon /home/... benutzen.

habe ich angepasst, dennoch gleicher fehler
 
Stimmt der Pfad, der dort als Fehler angemerkt wird, denn tatsächlich buchstabengenau mit dem überein, der es tatsächlich sein soll? Linux ist case-sensitive. Versuche daher auch mal, das cd-Kommando direkt in der Shell ohne das Skript auszuführen, einmal copy&paste und einmal mit auto-ersetzen-mittels-tab.
 
Mach doch mal alle Pfade absolut, z.B. so:
Code:
#!/bin/sh
/usr/bin/screen -dmS starbound /bin/sh /home/ng/gamesrv/starbound/linux/starbound_server.sh
 
Groug schrieb:
Und im Normalfall würde ich eher ~ statt $HOME nehmen.

Magst du erklären warum? ~ ist nur ein Alias für $HOME in einigen Shells. Aber nur $HOME zeigt wirklich immer auf das Home-Verzeichnis.
 
Celeborn schrieb:
user@server:~/gamesrv/batch$ sh starbound.sh

Also der Pfad sieht anders aus als du vorher geschrieben hast.

~/gamesrv/batch ist nicht gleich /home/ng/gamesrv/starbound/linux
 
  • Gefällt mir
Reaktionen: FastFireGames
kartoffelpü schrieb:
Mach doch mal alle Pfade absolut, z.B. so:
Code:
#!/bin/sh
/usr/bin/screen -dmS starbound /bin/sh /home/ng/gamesrv/starbound/linux/starbound_server.sh

Funktioniert nun ohne Fehler, aber der Screen wird nicht erstellt.
 
gaym0r schrieb:
Magst du erklären warum? ~ ist nur ein Alias für $HOME in einigen Shells. Aber nur $HOME zeigt wirklich immer auf das Home-Verzeichnis.

Wird wohl Gewohnheit sein, ~ sehe ich auch sehr oft in Scripten. $HOME eher nicht und bei mir stockt da irgendwie auch der Lesefluss:)
 
Celeborn schrieb:
Funktioniert nun ohne Fehler, aber der Screen wird nicht erstellt.
wer genau fuehrt das Skript denn nun aus? gib doch mal bitte mehr Kontext ...
Per Putty machst du eine SSH Verbindung zum Server? Als User XYZ?
 
Celeborn schrieb:
Funktioniert nun ohne Fehler, aber der Screen wird nicht erstellt.
Könnte damit zusammenhängen, dass der Pfad weiterhin nicht korrekt ist, siehe mein anderer Post.

/usr/bin/screen -dmS test bla
gibt auch keinen Fehler zurück, obwohl "bla" nicht existiert. Also erneut Pfade prüfen...
 
abcddcba schrieb:
wer genau fuehrt das Skript denn nun aus? gib doch mal bitte mehr Kontext ...
Per Putty machst du eine SSH Verbindung zum Server? Als User XYZ?

Ich benutze ein normalen Benutzer "ng" der hat auch root rechte.
Und ausführt wird das script unter "/home/ng/gamesrv/batch/starbound.sh" als user "ng"
Script ist mit "rwxr-x---" Konfiguriert.

und unter /home/ng/gamesrv/starbound/linux/ liegt das script
Ergänzung ()

kartoffelpü schrieb:
Könnte damit zusammenhängen, dass der Pfad weiterhin nicht korrekt ist, siehe mein anderer Post.

/usr/bin/screen -dmS test bla
gibt auch keinen Fehler zurück, obwohl "bla" nicht existiert. Also erneut Pfade prüfen...

Pfade habe ich geprüft und min WINSCP rauskopiert

/usr/bin/screen
/home/ng/gamesrv/starbound/linux/
/bin/sh
 
Wenn ich hier von WinSCP lese... Wie hast du die .sh Datei erstellt? Unter Windows und dann hochgeladen? Evtl. hast du hier ein Line-Ending Problem.
Kannst du mal "od -c startskript.sh" ausführen und checken ob es \r oder \n ist?
@Celeborn
 
Groug schrieb:
~ sehe ich auch sehr oft in Scripten. $HOME eher nicht und bei mir stockt da irgendwie auch der Lesefluss
Tilde substitution ist eine trickreiche sache, deshalb ist "$HOME" zu verwenden (unbedingt quoten) durchaus sinnvoll. Eine Einschränkung ist z.B., dass die Tilde an der allerersten Stelle im Wort stehen muss. Dinge wie foo -L=~/bar funktionieren nicht.
Ergänzung ()

On topic:
@Celeborn
Celeborn schrieb:
Funktioniert nun ohne Fehler, aber der Screen wird nicht erstellt.

Was erwartest du denn von deiner Commandline? Ich zitiere mal die Manpage von Screen:
Code:
       -d|-D [pid.tty.host]
            does  not start screen, but detaches the elsewhere running screen session. [...]

Edit: Sorry, -m verleiht -d eine andere Semantik.

Funktioniert es denn ohne Screen, also: /bin/sh /home/ng/gamesrv/starbound/linux/starbound_server.sh?
 
Zuletzt bearbeitet:
Zurück
Oben