How to use xargs in parallel
A good start is to use -P 4 -n 1
to run 4 processes in parallel (-P 4
), but give each instance of the command to be run just one argument (-n 1
)
These are the xargs
options for parallel use from the xargs manpage:
-P, --max-procs=MAX-PROCS run at most MAX-PROCS processes at a time
-n, --max-args=MAX-ARGS use at most MAX-ARGS arguments per command line
Example:
cat urls.txt | xargs -P 4 -n 1 wget
This command will run up to 4 wget
processes in parallel until each of the URLs in urls.txt
has been downloaded. These processes would be run in parallel
wget [URL #1]
wget [URL #2]
wget [URL #3]
wget [URL #4]
If you would use -P 4 -n 2
these processes would be run in parallel:
wget [URL #1] [URL #2]
wget [URL #3] [URL #4]
wget [URL #5] [URL #6]
wget [URL #7] [URL #8]
Using a higher value for -n
might slightly increase the efficiency since fewer processes need to be initialized, but it might not work with some commands if you pass multiple arguments.
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow