deutsch

jobber — execute and manage a list of tasks as shell commands

Here lives a little tool that aided me managing parameter studies of scientific simulations, or the other way round: those parameter studies helped to breed the idea for said tool and it is finally maturing after some years. It shall be useful for the public, finding a niche between the work on your personal laptop computer and filling a parallel cluster integrated with a central batch system.

Download

There will be proper releases soon. Right now, you can fetch the current state from the revision control system. The only dependency besides a Perl install on a POSIX OS (fork/exec and filesystem semantics) is version 4 of the Module Config::Param in reach.

Documentation

A description is available in form of the generated HTML documentation (jobber -h=-100 | pod2html)

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

Also, there are some

where I talk a bit more freely about what jobber is about and how I arrived at writing it.

Example

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