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.
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.
svn://scm.orgis.org/thor/jobber
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.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