xargs -P


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users xargs -P
# 1  
Old 02-05-2009
xargs -P

I discovered that GNU's xargs has a -P option to allow its processes to run in parallel. Great! Is this a GNU thing, or is it supported by other platforms as well?
# 2  
Old 02-05-2009
xargs -P -- It definitely is not part of POSIX, and it isn't on HP UX, so it must be a GNU thing, like the time manipulations GNU date is capable of doing.
# 3  
Old 02-06-2009
Thanks Jim. Anyone know about Solaris?
# 4  
Old 02-06-2009
AFAIK it is GNU specific. It's not on Solaris 10 either:

Code:
SYNOPSIS
     /usr/bin/xargs [-t]  [-p]  [  -e  [eofstr]]  [-E eofstr]  [-
     I replstr]  [  -i  [replstr]]  [-L number]  [ -l [number]] [
     -n number [-x]] [-s size] [ utility [ argument...]]

     /usr/xpg6/bin/xargs [-t] [-p] [ -e [eofstr]] [-E eofstr]  [-
     I replstr]  [  -i  [replstr]]  [-L number]  [ -l [number]] [
     -n number [-x]] [-s size] [ utility [ argument...]]

# 5  
Old 02-06-2009
Hi.

I was very surprised to learn about the additional capabilities of GNU/Linux xargs. It can be used as a throttle -- allow no more than n processes to be running at a time (from the processes it creates). More than that, xargs monitors the processes and if one of the n processes stops, xargs will pluck another of its arguments and fire off an additional process. Very nice, but not very well documented at all.

To see how this might work (if at all) on a non-GNU/Linux machine. I obtained the source from findutils - GNU Project - Free Software Foundation (FSF) onto an HP box, and compiled it. It took a long time, but it finished -- it compiles a few other things, e.g. the GNU version of find. The tests included in the source failed to run -- an item named runtest could not be located -- but I ran a small test of my own, essentially:
Code:
xargs -n 2 -P 4 $burn

where burn is a script that prints start, sleeps, prints stop. Omitting the script and some output, but showing, for the number of processes being 4, that whenever a process ends, another one is started, but never more than 4:
Code:
$ ./s1 data3

Environment: LC_ALL = C, LANG = C
(Versions displayed with local utility "version")
OS, ker|rel, machine: HP-UX, B.11.00, 9000/712
Distribution        : GenericSysName [HP Release B.11.00] (see /etc/issue)
GNU bash 2.05b.0

 Results:
 job  4 start  8 seconds at: 06:10:33
 job  3 start  6 seconds at: 06:10:33
 job  2 start  4 seconds at: 06:10:33
 job  1 start 50 seconds at: 06:10:33
 job  2 stop   4 seconds at: 06:10:37
 job  5 start 10 seconds at: 06:10:37
 job  3 stop   6 seconds at: 06:10:39
 job  6 start 12 seconds at: 06:10:39
 job  4 stop   8 seconds at: 06:10:41
 job  7 start 14 seconds at: 06:10:41
 job  5 stop  10 seconds at: 06:10:47
 job  8 start 16 seconds at: 06:10:48
 job  6 stop  12 seconds at: 06:10:51
 job  9 start 18 seconds at: 06:10:52
 job  7 stop  14 seconds at: 06:10:55
 job 10 start 20 seconds at: 06:10:56
 job  8 stop  16 seconds at: 06:11:04
 job  9 stop  18 seconds at: 06:11:10
 job 10 stop  20 seconds at: 06:11:16
 job  1 stop  50 seconds at: 06:11:23

So, for large-granularity parallel processing, this could be useful.

Of course, many people here could write a shell script to do much the same, but it is nice to have it done for you ... cheers, drl
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Xargs

Hi, can anyone tell me in detail ? what the following do in detail ? I am trying to get a largest number in a list Thanks Tao LARGEST=$(echo $* | xargs -n1 | sort -nr | tail -1) (3 Replies)
Discussion started by: ccp
3 Replies

2. Shell Programming and Scripting

Xargs

Hello, I need some help with xargs $ ls aaa bbb ccc ddd$ ls | xargs -I{} ls -la {} -rw-rw-r--. 1 xxx xx 0 May 30 20:04 aaa -rw-rw-r--. 1 xxx xx 0 May 30 20:04 bbb -rw-rw-r--. 1 xxx xx 0 May 30 20:04 ccc -rw-rw-r--. 1 xxx xx 0 May 30 20:04 dddit's possible to have output like this with... (3 Replies)
Discussion started by: vikus
3 Replies

3. Shell Programming and Scripting

Help with xargs

Using the bash shell I'm trying to either create a command for the command line or a script that will show netstat info for a given process name. Here is an example of what I'm trying to do:$ ps aux |grep catalina |grep -v grep | awk '{print $2}' 5132 $ netstat -nlp |grep 5132 (Not all processes... (11 Replies)
Discussion started by: axiopisty
11 Replies

4. Shell Programming and Scripting

xargs

Dear all , any suggest on xargs to combine from (1.txt and 2.txt) to output.txt ? thanks a lot. 1.txt 0123 BUM-5M BUM-5M 93490481 63839 0124 BUM-5M BUM-5M 112112 ... (3 Replies)
Discussion started by: samoptimus
3 Replies

5. Shell Programming and Scripting

Help with xargs

hi Could any one please tell me the option using which we can run multiple commands using xargs I have list of files, I want to run dos2unix and chmod at one shot on them I tried google n searched man pages but couldnt really find the solution , please help right now im doing this ls... (4 Replies)
Discussion started by: sunilmenhdiratt
4 Replies

6. Shell Programming and Scripting

Xargs and

Hello there, Let me show you a simple example of what I am trying to achieve: 1) I have an input text file with some lines: 1 a 2 b 3 c 2) And I want to run a command with these lines as arguments (+ arbitrary extra arguments). For example: $ command "1 a" "2 b" "3 c" "bye" I... (7 Replies)
Discussion started by: tokland
7 Replies

7. Shell Programming and Scripting

Help in using xargs

Hi, I have a requirement to RCP the files from remote server to local server. Also the RCP has to run in parallel. However using 'xargs' retrives 2 file names during each loop. How do we restrict to only one file name using xargs and loop till remaining files. I use the below code for... (2 Replies)
Discussion started by: senthil3d
2 Replies

8. Shell Programming and Scripting

Using xargs

hi i just want to know that how do we use xargs command to find files which are greater than specified memory in a given directory (6 Replies)
Discussion started by: sumit the cool
6 Replies

9. Shell Programming and Scripting

why we use xargs..

hi , can anyone help me by saying why we use xargs.. is it acing like a place holder..? thanks, Krips. (3 Replies)
Discussion started by: kripssmart
3 Replies

10. UNIX for Dummies Questions & Answers

Help with xargs

Hi there, I am trying to move around 3000 files from one directory to another. The mv command is complaining from too many arguments. I tried to use the xargs command but with no luck. Could some body provide help? Regards (4 Replies)
Discussion started by: JimJim
4 Replies
Login or Register to Ask a Question