cpumon.pl
上传用户:shbosideng
上传日期:2013-05-04
资源大小:1555k
文件大小:1k
源码类别:

SNMP编程

开发平台:

C/C++

  1. #!/usr/local/bin/perl
  2. # This was taken from a PERL script Chris Behrens wrote to monitor
  3. # resource usage for his IRC servers and was trimmed down to
  4. # report only cpu usage.  This has been tweaked to work well with
  5. # MRTG (Multi Router Traffic Grapher) and will work fine with
  6. # anything that has a pid file (ie: named)
  7. #
  8. # Matthew Ramsey <mjr@blackened.com>
  9. # Last Modified 31 OCT 1997
  10. $DEBUG = 0;
  11. # Which ps do you want to use ? If you use a non-berkeley based ps,
  12. # you will need to change the args used in the findcpu function.
  13. # Uncomment the line you want or modify one to suit your needs.
  14. #$ps = "/usr/ucb/ps"; # Solaris with UCB
  15. $ps = "/bin/ps"; # most systems
  16. # The ps arguments.  For a UCB-based (BSD) ps, -aux will probably
  17. # work just fine for you.  For SysV-based ps, -eaf works best for
  18. # me.
  19. $psargs = "-aux"; # UCB-based
  20. #$psargs = "-eaf"; # sysV-based
  21. if ($ARGV[0]) {
  22.    $pidfile = $ARGV[0] ;
  23. } else {
  24.    print STDERR "Usage: $0 <pidfile>n" ;
  25.    exit 1 ;
  26. }
  27. open(PID, "< $pidfile");
  28. chomp($pid = <PID>);
  29. close(PID);
  30. $cpu = findcpu($pid);
  31. print "$cpun";
  32. print "$cpun";
  33. print "$timen";
  34. print "";
  35. exit; # We're done!
  36. sub findcpu
  37. {
  38. local($pid) = @_;
  39. local($cpu, $psline, @ps);
  40. open(PS, "$ps $psargs |") || die "Couldn't run a ps: $!";
  41. chomp(@ps = <PS>);
  42. close(PS);
  43. foreach $psline (@ps)
  44. {
  45. @blah = split(' ', $psline);
  46. print "$pid $blah[1]n" if ($DEBUG);
  47. return $blah[2] if ($blah[1] == $pid);
  48. }
  49. return -1;
  50. }