Proc::ProcessTable, version 0.39 Please note that I've moved development of this package to sourceforge.net. Please address all comments/bugs/patches to: http://sourceforge.net/projects/proc-ptable/ STATUS ====== This is BETA software; it seems to work, but use at your own risk :) Currently works on darwin, nonstop-ux windows, linux, solaris, aix, hpux, freebsd, irix, dec_osf, bsdi, netbsd, unixware 7.x and SunOS. Please see the "README.osname" files for details on individual os implementations. Please see the file PORTING if you are interested in making it work on something else. Please see the file TODO for a list of issues that need to be addressed (and send me patches!). Please note that the windows port requires the Cygwin environment to work (available from http://cygwin.com/), and that the code for the port is derived from Cygwin code and is therefore covered by the Cygwin license (http://cygwin.com/licensing.html). Multithread support is now available for Solaris; please see README.solaris for info. It may work under other OS's as well; please let me know if it does. Comments, bug reports, patches and especially ports are greatly appreciated. If you want to submit a patch, *please* use standard context-diff format; if you're submitting a port, a tarball of the new files is great. DESCRIPTION =========== This module is a first crack at providing a consistent interface to Unix (and maybe other multitasking OS's) process table information. The impetus for this came about with my frustration at having to parse the output of various systems' ps commands to check whether specific processes were running on different boxes at a larged mixed Unix site. The output format of ps was different on each OS, and sometimes changed with each new release of an OS. Also, running a ps subprocess from within a perl or shell script and parsing the output was not a very efficient or aesthetic way to do things. With this module, you can do things like this: # kill memory pigs use Proc::ProcessTable; $t = new Proc::ProcessTable; foreach $p ( @{$t->table} ){ if( $p->pctmem > 95 ){ $p->kill(9); } } There is another short example in the file "example.pl" in the distribution. For a more elaborate example (in German), see . If you can't read German, try my other module, WWW::Babelfish! There are also two contributed modules: a module called Proc::Killall contributed by Aaron Sherman to kill all processes whose command-lines match a given pattern, and a module called Proc::Killfam by Stephen Lidie to kill a list of processes and their children. These modules are installed along with Proc::ProcessTable. Pod documentation is included in both of them. INSTALLATION ============ This module needs the File::Find and Storable modules in order to work. File::Find is generally included with perl distributions; Storable is available from CPAN. After unpacking the tar file, do: perl Makefile.PL make make test make install There is embedded POD documentation in ProcessTable.pm and Process/Process.pm. ACKNOWLEDGEMENTS ================ Thanks to the many people who have sent in ports and patches. Without them this module would be impossible to support on so many platforms. David Paquet AIX port Mike Romberg HPUX port Slaven Rezic FreeBSD port W. Phillip Moore IRIX port Peter ? IRIX version patch Rolf Petter Halle solaris nanosecond patch Bernhard Schmalhofer dec_osf port Sean Eskins bsdi port Peter Reich netbsd port Dave Alden solaris "nice" and "onproc" patch Noel Paul dec_osf and IRIX patches F. Buirey AIX patch for SMP Aaron Sherman Proc::Killall module Philip Gwyn jiffies -> Usec patch for linux Slaven Rezic Patch for Storable, FreeBSD Slaven Rezic Patch to make test script -w clean Wolfgang Friebel HPUX time patch Adrian Phillips AIX cmndline patch Chris Adams Patch for array return support, new fields on Dec OSF. Patches for TTYs with device #0 and using table() to get procs on Dec. Tryggvi Farestveit Patch for Linux cmndline Steve Lidie Killfam.pm module David Good Patch for 32-bit HPUX 11.0 support Martin Lucina Unixware 7.x port Shawn Clifford SunOS port Thomas Linden Linux enhancements Nicolas Belan Patch to add cmndline for bsdi Marcus Crafter Documentation typo Stephen Pillinger Fix for JIFFIES_TO_MICROSECONDS int overflow. H.Merijn Brand Patch for File::Find on AIX. Anthony Higa Linux code cleanup patch. Thomas Glanzmann Patch to fix starttime overflow and MP time bugs on linux. Doug Lewis Patch for taint checking. Jan L Peterson Patch for taint checking. Peter van Hooft Patch to allow non-root use on IRIX. Mike Castle Documentation typo patch. James FitzGibbon AIX patch. Joseph Cavanaugh Patch to add thread count for Solaris. Marcus Crafter Patch for linux compiler warnings. J Robert Ray Windows (Cygwin) port. Kong Li Solaris multithread support. Patch for tty mapping. Philip Molter Patch for my Solaris typo. Tim Cutts Patch for Tru64 clusters. Aaron Sherman Patch for ppt_warn. Tom Wyant Darwin port. Mike Steinert Nonstop-UX port. Please note that Bernard Schmalhofer is no longer able to provide support for the dec_osf port. COPYRIGHT ========= Copyright (c) 1998-2003 Daniel J. Urist. All rights reserved. This package is free software; you can redistribute it and/or modify it under the same terms as Perl itself. -- Daniel J. Urist durist@frii.com