Shell-Programmierung

Das folgende Problem will ich mit einem Unix-Shell-Programm lösen:

  • Eine Rechnung soll in einem bestimmten Folder per Commandozeile gestartet werden.
  • Sobald ein termination file geschrieben wurde soll die gleiche Rechnung in einem anderen Order (mit anderen Eingabevariablen) erneut gestartet werden.
    usw.

Frage: ist das einfach möglich? Gibt’s irgendwo Anleitungen dazu oder hat jemand ein entsprechendes script fertig?

Danke schon mal!

Halllo,

  • Eine Rechnung soll in einem bestimmten Folder per
    Commandozeile gestartet werden.

cd /dir/where/you/want

  • Sobald ein termination file geschrieben wurde soll die
    gleiche Rechnung in einem anderen Order (mit anderen
    Eingabevariablen) erneut gestartet werden.
    usw.

Hm. Kannst du nicht einfach warten bis sich das Programm, dass die Berechnung macht, terminiert?

Frage: ist das einfach möglich? Gibt’s irgendwo Anleitungen
dazu oder hat jemand ein entsprechendes script fertig?

Ein Schuss ins Blaue (nicht getestet)

Datei waitfor:

#!/bin/bash
#muss im PATH liegen
while true; do sleep 1; [-e "$1"] && exit; done

das eigentliche Skript:

#!/bin/bash
for f in $directories
do cd $f
calculate\_whatever
waitfor $termination\_file
done

HTH,
Moritz

Hi

Das folgende Problem will ich mit einem Unix-Shell-Programm
lösen:

  • Eine Rechnung soll in einem bestimmten Folder per
    Commandozeile gestartet werden.
  • Sobald ein termination file geschrieben wurde soll die
    gleiche Rechnung in einem anderen Order (mit anderen
    Eingabevariablen) erneut gestartet werden.
    usw.

Ich verstehe Dein Problem nicht ganz.

Mach es doch so einfach wie möglich.
Schreib doch einfach die Jobs in ein
Shell-script.

$rundir\> du 

 /rundir/--+-jobdir\_1
 |
 +-jobdir\_2
 |
 +-jobdir\_3
 |
 +-jobdir\_4

$rundir\> cat runjobs.sh

 #!/bin/bash
 # definiere parameter

 params\_1="1 2 3 4 hello 5"
 params\_2="3 5 1 3 5 hello"
 params\_3="5 2 1 3 5 hello"
 params\_4="3 5 1 6 hello 9"

 # starte ersten bis letzten job 
 for i in `seq 1 4` ; do
 param=params\_${i};
 cd jobdir\_${i} ; rechnung.686 ${param} ; cd ..
 done

$rundir\> ./runjobs.sh \>& logfile &

wenn der Job nach dem Ausloggen laufen soll,
machst Du:
$rundir\> nohup ./runjobs.sh \>& logfile 
Gänge das nicht?

CMБ