fork is a simple Perl script that runs any number of Unix commands in parallel.
I've needed a program to do this a few times, and while not very complicated, it's not exactly trivial either, so I thought I'd make it available.
Supply the commands on be executed on stdin. You can supply an optional argument to specift the number of jobs that should be run in parallel; the default is 10. You can also put this in the environment variable FORK_JOBS.
$ forkcommand 1 command 2 ... command N ^D
Two things, really: for speeding up batch processing by using all the CPUs in your system, and for running tasks in parallel that have external dependancies, such as network resources. In the first case you can speed things up by a factor of the number of CPUs available; in the second case you can reduce the running time of all tasks to that of the slowest task.
No. This script is designed to do one thing and do it well. There are no timeouts, output redirection, or anything like that. If you need anything fancy, it might be a good starting point for hacking something up.
fork is written in Perl, and uses the POSIX module. It needs a Unix-like system that has fork() and exec(). In other words, anything sufficiently Unix-like will do.
Click here for the Perl source. fork-1.0-1.noarch.rpm is an RPM built on Fedora Core 5, which should probably install on most other systems as well.
This software is in the public domain. You can do anything you like with it.