Um Jobskripte genauer zu verstehen betrachten wir noch einmal das etwas erweiterte Beispiel, diesmal mit Zeilennummern:
1 #!/bin/bash --login
2 #$ -cwd
3 #$ -N hello_world
4 #$ -j y
5 #$ -o hello_world.out
6 #$ -l h_rt=120000
7 #$ -l mem_free=4G
8 #$ -m e
9 #$ -M meine.mail@adresse
10 echo "Hello world!"
Es besteht aus drei Teilen: dem Hashbang (Zeile 1), dem Header (Zeilen 2-9) und dem eigentlichen Skript (alles ab Zeile 10).
Der Hashbang legt, wie bei anderen Skripten unter Unix auch, fest, mit welchem Interpreter das Skript ausgeführt werden soll. Im Beispiel ist das die Bourne-Shell. Prinzpiell können auch andere Skriptsprachen wie csh, Perl oder Python verwendet werden.
Die mit #$ beginnenden Zeilen werden vom Batchsystem als Optionen interpretiert. Die Option -cwd (Zeile 2) sagt, dass der Job in dem Verzeichnis ausgeführt werden soll, in dem qsub ausgeführt wurde.
Der Name des Jobs wird mit der Option -N festgelegt (Zeile 3). Er erscheint beispielsweise in der Ausgabe von qstat.
Mit -j y (Zeile 4) wird festgelegt, dass stderr und stdout in die gleiche Datei geschrieben werden sollen. Der Name dieser Datei wird mit -o angegeben (Zeile 5).
Die Option -l (Zeilen 6 und 7) beschreibt Ressourcenanforderungen und kann mehrfach vorkommen. Damit ein Job starten kann, müssen immer alle Anforderungen erfüllt sein. Ansonsten kann es schlimmstenfalls passieren, dass ein Job ewig wartet.
Die Resource h_rt (Zeile 6) gibt an (in Sekunden), wie lange der Job maximal laufen darf, bevor er vom System terminiert wird, und sollte unbedingt angegeben werden. Der größte mögliche Wert beträgt 792000, das entspricht 220 Stunden. Jobs mit kürzerer Laufzeit werden tendenziell bevorzugt gestartet.
mem_free sagt, wieviel Hauptspeicher (RAM) der Job benötigt.
Weitere mögliche Optionen finden sich in der Manpage von qsub, und teilweise auch in den anderen Beispielen auf dieser Seite.