english

jobber — Ausführung und Verwaltung einer Aufgabenliste als Shell-Kommandos

Dies ist die Heimstatt eines Werkzeuges, welches in meiner wissenschaftlichen Tätigkeit mir die Verwaltung von Parameterstudien erleichterte, bzw. getrieben von dieser als Idee keimte und nach ein paar Jahren erwachsen wurde. Ich hoffe, es ist der Allgemeinheit nützlich und kann eine Position zwischen selbstständiger Arbeit auf dem Laptop und Auslastung eines parallelen Rechnersystems mit zentraler Stapelverarbeitung (Batchsystem) einnehmen.

Download

Bald wird es gescheite Versionen geben. Derzeit sei auf den aktuellen Stand aus dem Revisionskontrollsystem verwiesen. Das Skript jobber benötigt lediglich ein POSIX-Basissystem (fork/exec und Dateisystemsemantik) und Perl 5 mit Version 4 von Config::Param in Reichweite.

Documentation

Eine (englische) Beschreibung findet man in der generierten HTML-Dokumentation (jobber -h=-100 | pod2html)

Further documentation in English is available from the RRZ / Universität Hamburg:

Weiterhin sind hier

auf denen ich etwas freier erzähle was es mit jobber auf sich hat und warum ich das Programm zwangsläufig schreiben musste.

Beispiel

shell$ for n in $(seq 1 10); do echo "echo === task $n ===; sleep $n; echo === task $n done ==="; done > joblist
shell$ jobber joblist init
[2022-04-21T14:59:54] appended 10 tasks
shell$ jobber -p4 -v --time=3 joblist all
[2022-04-21T15:00:18] 1.1 task.worker: echo === task 1 ===; sleep 1; echo === task 1 done ===
[2022-04-21T15:00:18] 2.2 task.worker: echo === task 2 ===; sleep 2; echo === task 2 done ===
[2022-04-21T15:00:18] 3.3 task.worker: echo === task 3 ===; sleep 3; echo === task 3 done ===
[2022-04-21T15:00:18] 4.4 task.worker: echo === task 4 ===; sleep 4; echo === task 4 done ===
=== task 1 ===
=== task 2 ===
=== task 3 ===
=== task 4 ===
=== task 1 done ===
[2022-04-21T15:00:19] 1.1 exit status: 0
[2022-04-21T15:00:19] 5.5 task.worker: echo === task 5 ===; sleep 5; echo === task 5 done ===
=== task 5 ===
=== task 2 done ===
[2022-04-21T15:00:20] 2.2 exit status: 0
[2022-04-21T15:00:20] ending operation, out of time
=== task 3 done ===
[2022-04-21T15:00:21] 3.3 exit status: 0
=== task 4 done ===
[2022-04-21T15:00:22] 4.4 exit status: 0
=== task 5 done ===
[2022-04-21T15:00:24] 5.5 exit status: 0

shell$ jobber joblist count todo
10
5
shell$
shell$ jobber joblist all
[2022-04-21T15:02:18] 6.6 task.worker: echo === task 6 ===; sleep 6; echo === task 6 done ===
=== task 6 ===
=== task 6 done ===
[2022-04-21T15:02:24] 6.6 exit status: 0
[2022-04-21T15:02:24] 7.7 task.worker: echo === task 7 ===; sleep 7; echo === task 7 done ===
=== task 7 ===
=== task 7 done ===
[2022-04-21T15:02:31] 7.7 exit status: 0
[2022-04-21T15:02:31] 8.8 task.worker: echo === task 8 ===; sleep 8; echo === task 8 done ===
=== task 8 ===
=== task 8 done ===
[2022-04-21T15:02:39] 8.8 exit status: 0
[2022-04-21T15:02:39] 9.9 task.worker: echo === task 9 ===; sleep 9; echo === task 9 done ===
=== task 9 ===
=== task 9 done ===
[2022-04-21T15:02:48] 9.9 exit status: 0
[2022-04-21T15:02:48] 10.10 task.worker: echo === task 10 ===; sleep 10; echo === task 10 done ===
=== task 10 ===
=== task 10 done ===
[2022-04-21T15:02:58] 10.10 exit status: 0

shell$ jobber joblist report
# job report
# selection: all
#task	worker	runtime/s	begin_epoch/s	crc	exit	signal
1	1	1	1650546018	29642	0	-1
2	2	2	1650546018	56930	0	-1
3	3	3	1650546018	19173	0	-1
4	4	4	1650546018	38163	0	-1
5	5	5	1650546019	404	0	-1
6	6	6	1650546138	44092	0	-1
7	7	7	1650546144	14523	0	-1
8	8	8	1650546151	1009	0	-1
9	9	9	1650546159	38774	0	-1
10	10	10	1650546168	8028	0	-1

shell$ jobber joblist requeue:3
[2022-04-21T15:08:07] tasks changed to state Q: 1
shell$ jobber joblist 1
[2022-04-21T15:08:16] 3.11 task.worker: echo === task 3 ===; sleep 3; echo === task 3 done ===
=== task 3 ===
=== task 3 done ===
[2022-04-21T15:08:19] 3.11 exit status: 0
shell$ jobber joblist report
# job report
# selection: all
#task	worker	runtime/s	begin_epoch/s	crc	exit	signal
1	1	1	1650546018	29642	0	-1
2	2	2	1650546018	56930	0	-1
3	11	3	1650546496	19173	0	-1
4	4	4	1650546018	38163	0	-1
5	5	5	1650546019	404	0	-1
6	6	6	1650546138	44092	0	-1
7	7	7	1650546144	14523	0	-1
8	8	8	1650546151	1009	0	-1
9	9	9	1650546159	38774	0	-1
10	10	10	1650546168	8028	0	-1