Compare commits
13 Commits
Author | SHA1 | Date |
---|---|---|
Zane C. B-H | 840b4c01ab | |
Zane C. B-H | 82fec755a2 | |
Zane C. B-H | 1e9fc8cc93 | |
Zane C. B-H | c9fb1a9d28 | |
Zane C. B-H | 935d8912da | |
Zane C. B-H | 674a591744 | |
Zane C. B-H | 46bf366ca0 | |
Zane C. B-H | 21dee6a37e | |
Zane C. B-H | 204a72a7a9 | |
Zane C. B-H | b54fcc024c | |
Zane C. B-H | 199576e71c | |
Zane C. B-H | bcb983630a | |
Zane C. B-H | 8bed192457 |
|
@ -1,5 +1,12 @@
|
|||
Revision history for Proc-ProcessTable-piddler
|
||||
|
||||
0.2.0 2019-09-04/00:00
|
||||
- Add support for the environ key.
|
||||
- Add add fifo, a_ignore, and memreglib.
|
||||
- Documentation cleanup.
|
||||
- If we don't plan to add something, don't
|
||||
dedup it.
|
||||
|
||||
0.1.0 2019-09-03/05:20
|
||||
- Add NO_COLOR support.
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ use Getopt::Long;
|
|||
use Proc::ProcessTable::piddler;
|
||||
|
||||
sub version{
|
||||
print "piddler v. 0.1.0\n";
|
||||
print "piddler v. 0.2.0\n";
|
||||
}
|
||||
|
||||
sub help{
|
||||
|
@ -17,13 +17,16 @@ sub help{
|
|||
-v Print the version info.
|
||||
--version Print the version info.
|
||||
|
||||
-a Show a_inodes.
|
||||
-d Do not dedup.
|
||||
-f Show FIFOs.
|
||||
-m Show memory mapped libraries of the REG type.
|
||||
-n Do not resolve PTR addresses.
|
||||
--nc Disable color.
|
||||
-p Do not show pipes.
|
||||
-r Do not show show VREG / files.
|
||||
-t Do not show shared libraries.
|
||||
-u Do not show unix sockets.
|
||||
-p Show pipes.
|
||||
-r Show show VREG / files.
|
||||
-t Show shared libraries.
|
||||
-u Show unix sockets.
|
||||
';
|
||||
}
|
||||
|
||||
|
@ -37,6 +40,9 @@ my $vregroot=0;
|
|||
my $dont_dedup=0;
|
||||
my $dont_resolv=0;
|
||||
my $no_color=0;
|
||||
my $a_inode=0;
|
||||
my $fifo=0;
|
||||
my $memreglib=0;
|
||||
|
||||
# get the commandline options
|
||||
Getopt::Long::Configure ('no_ignore_case');
|
||||
|
@ -53,6 +59,9 @@ GetOptions(
|
|||
'd' => \$dont_dedup,
|
||||
'n' => \$dont_resolv,
|
||||
'nc' => \$no_color,
|
||||
'f' => \$fifo,
|
||||
'a' => \$a_inode,
|
||||
'm' => \$memreglib,
|
||||
);
|
||||
|
||||
# print the version info if requested
|
||||
|
@ -96,6 +105,18 @@ if ( defined( $ENV{PIDDLER_pipe} ) ){
|
|||
if ( defined( $ENV{PIDDLER_vregroot} ) ){
|
||||
$vregroot = $vregroot ^ $ENV{PIDDLER_vregroot};
|
||||
}
|
||||
# XOR the -m if needed
|
||||
if ( defined( $ENV{PIDDLER_memreglib} ) ){
|
||||
$memreglib = $memreglib ^ $ENV{PIDDLER_memreglib};
|
||||
}
|
||||
# XOR the -a if needed
|
||||
if ( defined( $ENV{PIDDLER_a_inode} ) ){
|
||||
$a_inode = $a_inode ^ $ENV{PIDDLER_a_inode};
|
||||
}
|
||||
# XOR the -f if needed
|
||||
if ( defined( $ENV{PIDDLER_fifo} ) ){
|
||||
$fifo = $fifo ^ $ENV{PIDDLER_fifo};
|
||||
}
|
||||
# XOR the -d if needed
|
||||
if ( defined( $ENV{PIDDLER_dont_dedup} ) ){
|
||||
$dont_dedup = $dont_dedup ^ $ENV{PIDDLER_dont_dedup};
|
||||
|
@ -119,9 +140,12 @@ my $ppp=Proc::ProcessTable::piddler->new(
|
|||
txt=>$txt,
|
||||
unix=>$unix,
|
||||
pipe=>$pipe,
|
||||
a_inode=>$a_inode,
|
||||
fifo=>$fifo,
|
||||
vregroot=>$vregroot,
|
||||
dont_dedup=>$dont_dedup,
|
||||
dont_resolv=>$dont_resolv,
|
||||
memreglib=>$memreglib,
|
||||
}
|
||||
);
|
||||
|
||||
|
@ -134,14 +158,26 @@ piddler - Display all process table, open files, and network connections for a P
|
|||
|
||||
=head1 SYNOPSIS
|
||||
|
||||
piddler [B<-d>] [B<-n>] [B<-p>] [B<-r>] [B<-r>] [B<-t>] [B<-u>]
|
||||
piddler [B<-a>] [B<-d>] [B<-f>] [B<-m>] [B<-n>] [B<-p>] [B<-r>] [B<-r>] [B<-t>] [B<-u>]
|
||||
|
||||
=head1 FLAGS
|
||||
|
||||
=head2 -a
|
||||
|
||||
Show a_inodes.
|
||||
|
||||
=head2 -d
|
||||
|
||||
Do not dedup.
|
||||
|
||||
=head2 -f
|
||||
|
||||
Show FIFOs.
|
||||
|
||||
=head2 -m
|
||||
|
||||
Show memory mapped libraries of the REG type.
|
||||
|
||||
=head2 -n
|
||||
|
||||
Do not resolve PTR addresses
|
||||
|
@ -152,19 +188,19 @@ Disable color..
|
|||
|
||||
=head2 -p
|
||||
|
||||
Do not show pipes.
|
||||
Show pipes.
|
||||
|
||||
=head2 -r
|
||||
|
||||
Do not show show VREG / files.
|
||||
Show show VREG / files.
|
||||
|
||||
=head2 -t
|
||||
|
||||
Do not show shared libraries.
|
||||
Show shared libraries.
|
||||
|
||||
=head2 -u
|
||||
|
||||
Do not show unix sockets.
|
||||
Show unix sockets.
|
||||
|
||||
=head1 ENVIROMENTAL VARIABLES
|
||||
|
||||
|
@ -175,9 +211,21 @@ flags.
|
|||
|
||||
If set to 1, color will be disabled.
|
||||
|
||||
=head2 PIDDLER_a_inode
|
||||
|
||||
If set to 1, a_inode types will be shown.
|
||||
|
||||
=head2 PIDDLER_fifo
|
||||
|
||||
If set to 1, FIFOs will not be shown.
|
||||
|
||||
=head2 PIDDLER_memreglib
|
||||
|
||||
If set to 1, memory mapped libraries with the type REG will be shown.
|
||||
|
||||
=head2 PIDDLER_txt
|
||||
|
||||
If set to 1, libraries will not be shown.
|
||||
If set to 1, libraries with the TXT type will not be shown.
|
||||
|
||||
=head2 PIDDLER_pipe
|
||||
|
||||
|
|
|
@ -16,11 +16,11 @@ Proc::ProcessTable::piddler - Display all process table, open files, and network
|
|||
|
||||
=head1 VERSION
|
||||
|
||||
Version 0.1.0
|
||||
Version 0.2.0
|
||||
|
||||
=cut
|
||||
|
||||
our $VERSION = '0.1.0';
|
||||
our $VERSION = '0.2.0';
|
||||
|
||||
|
||||
=head1 SYNOPSIS
|
||||
|
@ -63,6 +63,12 @@ of options.
|
|||
|
||||
=head3 args hash
|
||||
|
||||
=head4 a_inode
|
||||
|
||||
Print a_inode types.
|
||||
|
||||
Defaults to 0, false.
|
||||
|
||||
=head4 dont_dedup
|
||||
|
||||
Don't dedup the file descriptor list.
|
||||
|
@ -86,6 +92,22 @@ Don't resolve PTR addresses.
|
|||
|
||||
Defaults to 0, false.
|
||||
|
||||
=head4 fifo
|
||||
|
||||
Print FIFOs.
|
||||
|
||||
Defaults to 0, false.
|
||||
|
||||
=head4 memreglib
|
||||
|
||||
Prints memory mappaed libraries that show are of type REG.
|
||||
|
||||
The following are used to match libraries.
|
||||
|
||||
/\.[0-9]+$/
|
||||
/\.[0-9]+\.[0-9$/
|
||||
/\.jar/
|
||||
|
||||
=head4 pipe
|
||||
|
||||
Print pipes.
|
||||
|
@ -173,17 +195,22 @@ sub new{
|
|||
'BRIGHT_MAGENTA',
|
||||
'BRIGHT_BLUE'
|
||||
],
|
||||
environ=>'BRIGHT_MAGENTA',
|
||||
txt=>0,
|
||||
pipe=>0,
|
||||
unix=>0,
|
||||
vregroot=>0,
|
||||
dont_dedup=>0,
|
||||
dont_resolv=>0,
|
||||
fifo=>0,
|
||||
a_inode=>0,
|
||||
memreglib=>0,
|
||||
};
|
||||
bless $self;
|
||||
|
||||
my @arg_feed=(
|
||||
'txt', 'pipe', 'unix', 'vregroot', 'dont_dedup', 'dont_resolv'
|
||||
'txt', 'pipe', 'unix', 'vregroot', 'dont_dedup', 'dont_resolv',
|
||||
'fifo', 'a_inore', 'memreglib'
|
||||
);
|
||||
|
||||
foreach my $feed ( @arg_feed ){
|
||||
|
@ -419,6 +446,13 @@ sub run{
|
|||
$value=$self->timeString( $proc->{$key} );
|
||||
}
|
||||
|
||||
if ( $key =~ /^environ$/ ){
|
||||
$value=join( color( $self->{environ} ).', '.color('reset') , @{ $proc->{environ} } );
|
||||
if ( !defined( $value ) ){
|
||||
$value='';
|
||||
}
|
||||
}
|
||||
|
||||
if (
|
||||
( $key =~ /flt$/ ) &&
|
||||
( $proc->{$key} eq 0 ) &&
|
||||
|
@ -492,6 +526,7 @@ sub run{
|
|||
my %rw_filehandles;
|
||||
my %r_filehandles;
|
||||
my %w_filehandles;
|
||||
my %mem_filehandles;
|
||||
my @lines=split(/\n/, $output_raw);
|
||||
my $line_int=1;
|
||||
while ( defined( $lines[$line_int] ) ){
|
||||
|
@ -522,6 +557,29 @@ sub run{
|
|||
( $line_split[3] =~ /^[Uu][Nn][Ii][Xx]$/ ) &&
|
||||
( ! $self->{unix} )
|
||||
) ||
|
||||
# fifo... spammy with elasticsearch and the like... only print if asked...
|
||||
(
|
||||
( $line_split[3] =~ /^[Ff][Ii][Ff][Oo]$/ ) &&
|
||||
( ! $self->{fifo} )
|
||||
) ||
|
||||
# memory mapped libraries with REG type....
|
||||
# spammy.... ES tends to have lots of these
|
||||
(
|
||||
( $line_split[3] =~ /^[Rr][Ee][Gg]$/ ) &&
|
||||
(
|
||||
( $line_split[7] =~ /\.so$/ ) ||
|
||||
( $line_split[7] =~ /\.so\.[0-9]$/ ) ||
|
||||
( $line_split[7] =~ /\.so\.[0-9]+\.[0-9]+$/ ) ||
|
||||
( $line_split[7] =~ /\.so\.[0-9]+\.[0-9]+\.[0-9]+$/ ) ||
|
||||
( $line_split[7] =~ /\.jar$/ )
|
||||
) &&
|
||||
( ! $self->{memreglib} )
|
||||
) ||
|
||||
# a_inode... spammy with elasticsearch and the like... only print if asked...
|
||||
(
|
||||
( $line_split[3] =~ /^a\_inode$/ ) &&
|
||||
( ! $self->{a_inode} )
|
||||
) ||
|
||||
# vreg /....can by spammy with somethings like firefox
|
||||
(
|
||||
( $line_split[3] =~ /^[Vv][Rr][Ee][Gg]$/ ) &&
|
||||
|
@ -534,9 +592,13 @@ sub run{
|
|||
|
||||
# begin deduping
|
||||
my $name= color( $self->{file_colors}[5] ).$line_split[7].color( 'reset' );
|
||||
if ( ! $self->{dont_dedup} ){
|
||||
if (
|
||||
( ! $self->{dont_dedup} ) &&
|
||||
( ! $dont_add )
|
||||
){
|
||||
if (
|
||||
( $line_split[3] =~ /[Vv][Rr][Ee][Gg]/ ) ||
|
||||
( $line_split[3] =~ /[Rr][Ee][Gg]/ ) ||
|
||||
( $line_split[3] =~ /[Vv][Dd][Ii][Dd]/ ) ||
|
||||
( $line_split[3] =~ /[Vv][Cc][Hh][Rr]/ )
|
||||
) {
|
||||
|
@ -568,6 +630,14 @@ sub run{
|
|||
} else {
|
||||
$w_filehandles{ $name }++;
|
||||
}
|
||||
}elsif (
|
||||
( $line_split[2] =~ /mem/ )
|
||||
){
|
||||
if (! defined( $mem_filehandles{ $name } ) ) {
|
||||
$mem_filehandles{ $name } = 1;
|
||||
} else {
|
||||
$mem_filehandles{ $name }++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -592,9 +662,11 @@ sub run{
|
|||
my %rw_dedup;
|
||||
my %r_dedup;
|
||||
my %w_dedup;
|
||||
my %mem_dedup;
|
||||
foreach my $line ( @fdata ){
|
||||
if (
|
||||
( $line->[1] =~ /[Vv][Rr][Ee][Gg]/ ) ||
|
||||
( $line->[1] =~ /[Rr][Ee][Gg]/ ) ||
|
||||
( $line->[1] =~ /[Vv][Dd][Ii][Dd]/ ) ||
|
||||
( $line->[1] =~ /[Vv][Cc][Hh][Rr]/ )
|
||||
){
|
||||
|
@ -636,6 +708,13 @@ sub run{
|
|||
}
|
||||
$w_dedup{ $line->[5] } = 1;
|
||||
}
|
||||
}elsif(
|
||||
( $line->[0] =~ /mem/ )
|
||||
){
|
||||
if ($mem_filehandles{ $line->[5] } > 1){
|
||||
$line->[0]=$line->[0].'+';
|
||||
}
|
||||
$mem_dedup{ $line->[5] } = 1;
|
||||
}
|
||||
|
||||
if ( $add_line ){
|
||||
|
|
24
README.md
24
README.md
|
@ -7,12 +7,16 @@ Display all process table, open files, and network connections for a PID.
|
|||
|
||||
# Command Line Options
|
||||
```
|
||||
-a Show a_inodes.
|
||||
-d Do not dedup.
|
||||
-f Show FIFOs.
|
||||
-m Show memory mapped libraries of the REG type.
|
||||
-n Do not resolve PTR addresses.
|
||||
-p Do not show pipes.
|
||||
-r Do not show show VREG / files.
|
||||
-t Do not show shared libraries.
|
||||
-u Do not show unix sockets.
|
||||
--nc Disable color.
|
||||
-p Show pipes.
|
||||
-r Show show VREG / files.
|
||||
-t Show shared libraries.
|
||||
-u Show unix sockets.
|
||||
```
|
||||
|
||||
# Enviromental Variables
|
||||
|
@ -24,12 +28,16 @@ Unless set to defined ands set to 1, these will default to 0.
|
|||
|
||||
| Variable | Description |
|
||||
| -------- | ---------------- |
|
||||
| PIDDLER_txt | If set to 1, libraries will not be shown. |
|
||||
| PIDDLER_pipe | If set to 1, pipes will not be shown. |
|
||||
| PIDDLER_unix | If set to 1, unix socket will not be shown. |
|
||||
| PIDDLER_vregroot | If set to 1, VREG / will not be shown. |
|
||||
| NO_COLOR | If set to 1, color will be disabled. |
|
||||
| PIDDLER_dont_dedup | If set to 1, duplicate file handles are removed. |
|
||||
| PIDDLER_dont_resolv | If set to 1, PTR addresses will not be resolved for network connections. |
|
||||
| PIDDLER_a_inode | If set to 1, a_inode types will be shown. |
|
||||
| PIDDLER_fifo | If set to 1, FIFOs will not be shown. |
|
||||
| PIDDLER_memreglib | If set to 1, memory mapped libraries with the type REG will be shown. |
|
||||
| PIDDLER_pipe | If set to 1, pipes will not be shown. |
|
||||
| PIDDLER_txt | If set to 1, libraries with the TXT type will not be shown. |
|
||||
| PIDDLER_unix | If set to 1, unix socket will not be shown. |
|
||||
| PIDDLER_vregroot | If set to 1, VREG / will not be shown. |
|
||||
|
||||
# Installing
|
||||
|
||||
|
|
Loading…
Reference in New Issue