async
async
is a tool to run shell commands in parallel and is designed to be able to quickly parallelize shell scripts with minimal changes.
It was inspired by GNU Parallel, with the main difference being that async
retains state between commands by running a server in the background.
Usage
All information about the command line interface is available using async --help
. Below is an example on how to use async
to parallelize commands:
#!/bin/bash
S="/tmp/example_socket"
async -s="$S" server --start
for i in {1..20}; do
# prints command output to stdout
async -s="$S" cmd -- bash -c "sleep 1 && echo test $i"
done
# wait until all commands are finished
async -s="$S" wait
# configure the server to run four commands in parallel
async -s="$S" server -j4
mkdir "/tmp/ex_dir"
for i in {21..40}; do
# redirects command output to /tmp/ex_dir/file*
async -s="$S" cmd -o "/tmp/ex_dir/file$i" -- bash -c "sleep 1 && echo test $i"
done
async -s="$S" wait
# stops server
async -s="$S" server --stop
If you encounter an unexpected error or crash, please turn on logging by setting the environment variable RUST_LOG=debug
and open an issue on the Github repository.
Installation
async
can be installed using cargo with cargo install async-cmd
or from the AUR.