PUBLISHED ON: FEBRUARY 15, 2023
How to run commands at the same time with moreutils parallel command-line utility?
Most of the CPUs nowadays are multi-cores. parallel runs the specified command, passing it a single one of the specified arguments. This is repeated for each argument. Jobs may be run in parallel. (The default is to run one job per CPU.)
Install moreutils parallel command
There are two parallel utilities available in Debian Linux. If you simply try to run parallel command, you get this error:

To install moreutils parallel which is used in this tutorial use:
apt install moreutils
More more information check this discussion: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=597050
 
Syntax for moreutils parallel command:
       parallel [options] [command]-- [argument ...]
       parallel [options]-- [command ...]
Options available for moreutils parallel command:
	
		
			| Options | Description | 
	
	
		
			| -jmaxjobs | Use to limit the number of jobs that are run at the same time. | 
		
			| -lmaxload | Wait as needed to avoid starting new jobs when the system's load average is not below the specified limit. | 
		
			| -i | Normally the command is passed the argument at the end of its command line. With this option, any instances of " {}" in the command are replaced with the argument. | 
		
			| -n | Number of arguments to pass to a command at a time. Default is 1. Incompatible with -i. | 
	
 
Run multiple command in parallel with moreutils parallel command in Linux
To run multiple independent command in parallel or using multiple CPU cores, we have the following syntax:
parallel -j [number of jobs at a time] -- "command 1" "command 2" "command 3"
Let's try running three commands using 1, 2, 3 jobs at a time using parallel command and take a look at the results of the time command for the time taken to finish the processes.

Time taken when
	- Single job : 4.20s
- Two jobs : 1.32s
- Three jobs : 1.20s
You can see that time taken way shorter when using multiple processors.
 
Misc: To run a processes at the same time until all files have been processed.
parallel -j 3 cat -- *
Run subshells on each processor with moreutils parallel command in Linux
To run multiple subshells on a (specified) processor, we have the following syntax:
parallel sh -c "[command]" -- [processor number]
Let's try running a command by specifying the processor to use (on a system with 3 processor):
 You can see that if you try to use more processors than available, it will run after a process is finished.
You can see that if you try to use more processors than available, it will run after a process is finished.
Tip: You can also find out the number of processors available in your system by this tricky method.
Conclusion
In this tutorial, we explored parallel command to run multiple processs on multiple CPU cores. This saves so much time while dealing with heavy time consuming processes.