Skript ausführen

Post Reply
Message
Author
kiko

Skript ausführen

#1 Post by kiko »

Hallo zusammen,

ich habe ein Skript welches im Pfad /a/b/skript.sh liegt.
Um das aber auszuführen muss ich erst im /c/d/e/ Verzeichnis wechseln.

Also habe ich einen kleinen zweizeiler geschrieben:

#!/bin/sh
cd /c/d/e/
/a/b/skript

Jetzt die Frage:
Muss ich vor /a/b/skript noch den "." setzen oder passt das so??
Mein Problem ist dass es sich bei skript um was größeres hadelt und schwirig
nachzuvolziehen ist ob es jetzt richtig gestartet hat oder nicht.

Also Punkt oder ohne Punkt?? :o)
Danke für eure Tipps

kiko

User avatar
max
Posts: 806
Joined: 14. May 2000 12:55
Location: Ruhrpott

Re: Skript ausführen

#2 Post by max »

da läuft aber was schief...

also:
. skriptname
bedeutet das das Skript in der gleichen shell abgearbeitet wird. Ansonsten wird das Skript in einer eigenen gestartet.
Setzt du im Skript selbst Variablen -als Beispiel- stehen diese auch in dem Skript zur Verfügung aus der heraus dieses gestartet wurde.

Wenn dein Skript Dateien nutzt die in einen anderen Verzeichnis liegen als das Skript selbst liegen, dann sollten diese entsprechenden angesprochen werden. Entweder über globale oder relative Pfadangaben.
Alles andere ist Bastelei.
justmy2¤-Cents
Max

Michael

Re: Skript ausführen

#3 Post by Michael »

Wenn Du einen Punkt direkt vor "/a/b/skript" (also "./a/b/skript") setzen
würdest, wird das script relativ zum aktuellen Pfad aufgerufen:

/c/d/e/a/b/skript

Es müßte also im Pfad "/c/d/e/a/b/" steht. Steht es im Pfad "/a/b" ist der von Dir
vorgeschlagene Weg (ohne Punkt) richtig, da das die absolute "Adressierung" ist.

Schreib doch mal set -x oben in Dein Script und führ es mal von der Console aus.

Cheer

Michael

kiko

Re: Skript ausführen

#4 Post by kiko »

Genial wie schnell man hier eine Antwort bekommt.
Cool


Danke es funzt.

Nur ein kleiner Schönheitsfehler.
Wie kann ich den Prozess starten nachdem das System vollständig
gebootet hat?
Weil nämlich der Prozess der durch das Skript gestartet wird, etwas lange
dauert und man deswegen über keine tty sich einloggen kann um weiterzuarbeiten.

Wenn ihr dazu mir noch einen Tipp geben könnt wäre ich echt glücklich :o))

Cheers
kiko

Michael

Re: Skript ausführen

#5 Post by Michael »

Du ermittest in der /etc/inittab den Runlevel mit dem
das System gestartet wird:

snip
----
# default runlevel
id:3:initdefault:
----
snap


Hier ist das also Runlevel 3. Dann legst Du einen
symbolischen Link auf das Skript, um es am Ende
des Bsootens zu start.

ln -fs /root/scripts/myscript /etc/init.d/rc3.d/S99myscript

eine andere Möglichkeit wäre

/etc/init.d/boot.local das von /etc/init.d/boot aufgerufen
wird, wenn es in der /etc/inittab so vereinbart ist:

snip
----
# check system on startup
# first script to be executed if not booting in emergency (-b) mode
si:I:bootwait:/etc/init.d/boot
----
snap

Bei älteren SuSe's ist /etc/init.d gegen /sbin/init.d auszutauschen.

Cheers

Michael

User avatar
max
Posts: 806
Joined: 14. May 2000 12:55
Location: Ruhrpott

Re: Skript ausführen

#6 Post by max »

gucke einfach das startskript und hänge ein &-Zeichen dahinter.
Damit wird der Prozess in den Hintergrund geschickt und es wird weiter gebootet.
Aber Vorsicht! Nur machen wenn nachfolgende Prozesse nicht auf ein fertig abgearbeites Skript angewiesen sind.
(Bei mir mache ich das so mit ntpdate der sich manchmal recht lange Zeit nimmt...)
Max

Post Reply