Some interesting points raised - thanks! I benchmarked the 'lsof -Pn -c $processname' against the 'lsof -c $processname' that I was using - and surprisingly enough, they seem to be dead even (more or less). I would have thought that using '-Pn' would give a little speed boost - though perhaps it has something to do with our server configuration (little interaction with other servers, etc).
Also - thanks for the info about the Fields argument, not to mention the great sample script! I'll definitely be playing with that a bit over the next few days.
Just for the heck of it, here's the code (and results) of the 'lsof -Pn' comparison:
#!/usr/bin/perl -w
use Benchmark qw(:all);
use strict;
my $process = "processX";
my $lsofcmd1 = "/usr/local/bin/lsof -Pn -c $process|wc -l";
my $lsofcmd2 = "/usr/local/bin/lsof -c $process|wc -l";
my $count = 1000;
my $results = timethese($count,
{
'lsof_Pn_c' => sub { system($lsofcmd1);},
'lsof_c' => sub { system($lsofcmd2); },
},
'none'
);
print ("\n\n");
cmpthese( $results ) ;
### Results (ran it several times and got similar numbers) ###
# Rate lsof_Pn_c lsof_c
# lsof_Pn_c 370/s -- -0%
# lsof_c 372/s 0% --