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?? )
Danke für eure Tipps
kiko
Skript ausführen
Re: Skript ausführen
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
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
Re: Skript ausführen
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
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
Re: Skript ausführen
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 ))
Cheers
kiko
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 ))
Cheers
kiko
Re: Skript ausführen
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
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
Re: Skript ausführen
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
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