A tool to execute commands in parallel (something like GNU parallel).
Written to try out the Little language. And also Rust.
ljobs [OPTIONS...] COMMAND [CMD-ARGS...] ::: TASKS...
ljobs [OPTIONS...] COMMAND [CMD-ARGS...] < TASKS
ljobs will run the given command for each task. Multiple commands can run in parallel.
Each task is an arbitrary string, commonly a file name or other input.
If the ::: form is used then tasks are given directly on the command
line. Otherwise, tasks are read from standard input, one line per task.
These strings are replaced in command arguments:
{} replaced by the task argument
{.} replaced by task without extension
{/} replaced by basename of task
{//} replaced by dirname of task
{/.} replaced by basename of task without extension
{#} replaced by the task number, counting from 0
If none of the strings occur in a command argument then the task is
appended as the last argument of the command, i.e. {} is implied.
These are the options to ljobs itself.
-
-j NUM,--jobs NUMSpecify number of job slots. Defaults to number of processors detected.
-
-k,--keep-goingContinue starting tasks even if a previous task failed.
-
-cExecute command with the shell interpreter given by the
SHELLenvironment variable, or else/bin/sh. The command arguments are passed as positional parameters $1, $2, etc. -
-v,--verboseEnable verbose output.
-
-n,--dry-runPrint commands to be executed but do not run them.
-
-h,--helpShow usage message.
-
--End option processing.
The standard output and standard error outputs of a running command are buffered in temporary files, and only output once the command stops. This prevents interleaving of outputs for different tasks.
With -k or --keep-going the exit status is
0 all tasks executed successfully
1-253 number of failed tasks
254 more than 253 failed tasks
255 other error
Without -k or --keep-going the exit status is
0 all tasks executed successfully
1-255 exit status of a failed task
ljobs oggenc ::: *.flac
ljobs lame {} {.}.mp3 ::: *.wav
- Does not catch signals. This seems to require a Tcl extension.
Peter Wang