Perl : ÇÁ·Î¼¼½º »óÅÂÁ¤º¸ ¾ò¾î¿À±â
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : Code>JPerl>Process_Status



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

ÄÚµå

#!/usr/bin/perl 
 
$argnum = $#ARGV+1; 
$PNAME = $ARGV[0]; 
$PID=$$; 
 
# ¾Æ±Ô¸ÕÆ®·Î PID ¹øÈ£¸¦ ÀԷ¹޴´Ù. 
# /proc/PID/status ¸¦ ÀÌ¿ëÇØ¼­ ½ÇÇàÁßÀÎ ¾²·¹µå °¹¼ö¸¦ ¾ò¾î¿Â´Ù. 
sub getThreadNum 
{ 
  my($PID) = @_; 
  my $PROC = "/proc/$PID/status"; 
  my $thread=""; 
  my $line; 
  open(LFD, $PROC) || return 0; 
 
  while($line=<LFD>) 
  { 
    if ($line =~ m/^Threads:/) 
    { 
      $line =~ s/\s+$//; 
      @_=split /:[ \t]+/,$line; 
      $thread=$_[1]; 
      close(LFD); 
      return atoi($thread); 
    } 
  } 
  close(LFD); 
} 
 
# ¹®ÀÚ¿­À» ¼ýÀÚ·Î º¯°æÇÑ´Ù. 
sub atoi 
{ 
    my $num; 
    foreach my $d (split(//, shift())) 
    { 
        $num = $num * 10 + $d; 
    } 
    return $num; 
} 
 
open(FD, "ps aux |") || die "Process Status FAILURE |status=0\n"; 
$CpuUsage = 0.0; 
$MemUsage = 0.0; 
$MemSize = 0; 
$Pnum = 0; 
$TNum = 0; 
while($line = <FD>) 
{ 
  if ($line =~ m/$PNAME/) 
  { 
    if ($line =~ m/$0/) 
    { 
    } 
    else 
    { 
      @_ = split / +/,$line; 
      $CpuUsage = $CpuUsage + $_[2]; 
      $MemUsage += $_[3]; 
      $MemSize += $_[4]; 
      $TNum += getThreadNum($_[1]); 
      $Pnum++; 
    } 
  } 
} 
if ($Pnum == 0) 
{ 
    printf "Process Status OK |status=0\n"; 
} 
else 
{ 
    printf "Process Status OK |status=1 cpu=%2.2lf mem=%2.2lf num=$Pnum size=%d thread=%d\n", $CpuUsage, $MemUsage, $MemSize, $TNum; 
} 
 

»ç¿ë¹æ¹ý

# Process_Status apache2 
Process Status OK |status=1 cpu=0.00 mem=0.00 num=5 size=1428536 thread=83 
 

°ü·ÃŰ¿öµå

EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.