• Windows 万能守护进程


    <pre name="code" class="sql">use Win32::Process::Info;
    while (1==1){
    use Sys::Hostname;
    use HTTP::Date qw(time2iso str2time time2iso time2isoz);  
    use Net::SMTP;
    
           if ( $#ARGV < 1 ){
            print "please input 程序目录 程序名!
    ";
                    exit(-1);
                        };
    					
    open( FILE, "<", "mail.conf" );
          my @temp=<FILE>; 
    	  foreach (@temp) {
          chomp $_;
    	  ($name,$passwd,$server) = split(/s+/,$_);
    	  };
    	  close FILE;
    
    	  print "$name is $name
    ";
    	  print "$passwd is $passwd
    ";
    	  print "$server is $server
    ";
    sub send_mail{
    if (@_ != 2){print "请输入2个参数
    ";exit 1};
        ($m,$n) = @_; #将参数赋值给变量  
        my $to_address  = $m;
    my $CurrTime = time2iso(time());
        my $to_address  = $m;
    
     my $mail_user   = "$name";
        my $mail_pwd    = "$passwd";
        my $mail_server = "$server";
    
        my $from    = "From: $mail_user
    ";
        my $subject = "Subject: zjcap info
    ";
        my $info = "$CurrTime--$n";
         my $message = <<CONTENT; 
         $info
    CONTENT
        my $smtp = Net::SMTP->new($mail_server);
    
        $smtp->auth($mail_user, $mail_pwd) || die "Auth Error! $!";
        $smtp->mail($mail_user);
        $smtp->to($to_address);
    
        $smtp->data();             # begin the data
        $smtp->datasend($from);    # set user
        $smtp->datasend($subject); # set subject
        $smtp->datasend("
    
    ");
        $smtp->datasend("$message
    "); # set content
        $smtp->dataend();
        $smtp->quit();
    };
    
    
    
    my $pi=Win32::Process::Info->new({assert_debug_priv => 1});
    my  @processinfo ='';
    my  @arr1='';
    my $var='';
    my @processinfo = $pi->GetProcInfo();
    foreach my $process (@processinfo){
      print join(':',$process->{'Name'},$process->{'ProcessId'},
                     $process->{'Owner'}),"
    ";
    				 $var=$process->{'Name'};
    				 ##将进程名放入数组
    			     push @arr1,$var;
    
    				 }
    				 print "----------------------
    ";
    				
    	
    	
    $proc="$ARGV[1]";
    
    print "$proc is $proc
    ";
    
    $dir="$ARGV[0]";
    
    print "$dir is $dir
    ";
    
    #foreach (@arr1){if ($_ =~ /360/){print "$_
    "}};
    if (grep m/$proc/i,@arr1 ){print "$proc is running
    "}
      
      else{ print "$proc is not running
    ",chdir $dir,
        #else{ print "$proc is not running
    ",chdir $dir,
      system("start $proc"),send_mail($name,"$proc is lost")
      };}
    


    
    
    
                                        
    
  • 相关阅读:
    算法分析(3)——冒泡排序真的慢吗?
    算法分析(2)——大O和大Θ
    算法分析(1)——数据的影响和函数的增长
    递归的逻辑(5)——米诺斯的迷宫
    递归的逻辑(4)——递归与分形
    李洪强和你一起学习前端之(9)规避脱标,CSS可见性,滑动门案例
    iOS应用管理(优化)
    iOS开发-应用管理
    iOS开发-Tom猫
    iOS 10.3.3 更新背后的故事
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351391.html
Copyright © 2020-2023  润新知