SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3584|回复: 1

[Perl] 使用perl根据端口杀进程

[复制链接]
发表于 2014-8-6 15:56:03 | 显示全部楼层 |阅读模式
#!/usr/bin/perl
' ]( [4 i" H1 h$ t# |' h- T; w" Z) n" m- h. ~- a
# Copyright Statement:$ m/ @1 r6 u: t
# --------------------# g0 U& ?% V# ~: x
# This programe is kill the pid by the port!
6 |% I, h# q* [/ h, X" U/ Z1 f# / x& i+ z2 f. t: H& \+ k
# @author: hakisman@gmail.com#  
7 M( c' q- R/ E# Date: 2013.12.31#
9 Z* q% r" Y# E- F! \% c7 a: [) |2 U3 |/ `, a1 i
my @PortArray = @ARGV;           
2 R8 O& d; {& |7 P! U! ?my @PidArray;   
9 f1 _1 j3 f! g, b0 y& f7 x4 ?7 ]my $result;   
2 o& m# ^7 z) ^: T$ h7 |" Mmy $i;
( V6 m# U9 g) l( h
0 i2 @8 q8 C5 }/ Y3 ~" x" Lif($#ARGV==-1){
, p" h6 N/ ]) a. _% w  print "ERROR:The number of parameters is wrong!\n";
# v% ?0 ]6 A/ ?    &Usage;
( d! R7 V' b  n4 l9 @2 j}
3 I4 s9 P- B$ b" D7 u& s+ q* }$ }0 n
&checkPort;
2 _! w# x- m5 H# F7 j8 F&getPid;2 O3 f. w( u/ S# q9 _

* J& i- @$ _# h1 h% F' Kfor($i=0;$i<=$#PortArray;$i++){6 `3 H/ O0 w/ s/ i& F( [/ J
    print "The port $PortArray[$i]"."'s pid is $PidArray[$i]";6 c! Y+ e& x# `. M; R( V. E# S
    print "kill -9 $PidArray[$i]";$ e# r4 x5 K# b$ p
    $result =`kill -9 $PidArray[$i]`;4 }/ K* f! q3 ~, y+ ?' e" X( R
    #print "kill -9 $PidArray[$i] result is $result\n";/ o  K" F& A- k; K3 P4 q
}
, G) A6 L* ~+ V: `" a
% o$ f6 C8 B1 o. \0 e6 x8 s7 Tsub checkPort{8 K- u# s# f) n
     for($i=0;$i<=$#PortArray;$i++){, n1 v* }! x& J0 X  @
           if(($PortArray[$i] =~ /[^0-9]+/)||($PortArray[$i]<=1024)||($PortArray[$i]>=65536)){# w) W9 v6 J8 b/ P; J9 k
             print "ERROR:The port you put is wrong!\n";3 ?4 O# x1 g) c- r; e1 }
               &Usage;
% _9 W& M* R/ {! ]           }' s  H: W" C8 J( F! |
     }; P& ?# D. c- ?7 ]5 O* W1 X8 l
}0 _& B5 L2 y! K- }- A
4 b3 R# o' x/ f$ i
sub getPid{
" Z; l+ z# h- @8 y    for($i=0;$i<=$#PortArray;$i++){
* h) Q. c6 O6 s; _1 \% o            my $commond = "netstat -tlnp|grep ".$PortArray[$i]."|awk '{print \$7}'|awk -F '/' '{print \$1}'";
  J4 e5 k- h7 W2 B7 [           #print $commond."\n";5 w; k# v" d; `, J
           my $Pid = `$commond`;; a$ C, W: r: a1 s. A' f4 E0 P9 M
           if(($Pid == null)||($PortArray[$i] =~/[^0-9]+/)){
$ ]: e$ u2 b) G+ O6 b" E             print "ERROR:The port can't retrun to the pid!\n";: P: |! k0 C2 x' f  H
               &Usage;
( I  g: O7 G: t: ?4 v1 H: @- T, d           }   
& d$ {+ ?& V$ L! z- ~$ \           push @PidArray,$Pid;   
6 ]( S& V5 i& L# x) i    }
1 g4 `- `" V# c8 V/ g, F}
; @% l) q7 M! W# R  P0 c) Z
8 L/ o4 ]0 j  s! `: ?sub Usage {9 f  P( \9 c& E2 z* o8 F$ W6 h
warn << "__END_OF_USAGE";; N: y/ l8 [% a; ^$ @# I( o
        ( D& i7 D$ M9 I9 K% ~1 o( ]# t
Usage:$ u- u- w9 z' S' ]! ~1 ^; Q0 j0 B* [

: {9 z1 ^+ `; ~; P1 ~  kport ["port"]...; h! i- d) g) w2 \5 M' I, G3 @
  1,The port must be a number.
2 ~  a4 R! |% |1 `  2,The number of the port must Between 1024 and 65536.' F8 a0 k/ k4 N3 s, O# ]5 W# L
  3,The port must be exits.
7 i3 S$ A7 r5 q  
* K$ _" M1 i  K. R( i/ u, f! d( b9 S( x  u
  y0 K, O/ \. t0 W7 KExample:
- {& L2 z5 c$ o# G* ?1 ~  kport 8080 8180 8280 8380
3 U% p3 @  M' b1 W5 a( _  (Kill the pid by the port!)
% X8 P4 d$ J# b3 h  .....
7 g& G' _5 j8 a  I
8 Q6 y+ M8 ?/ g& y  `0 G3 E__END_OF_USAGE4 q: U+ L( @7 B, c8 j
    : o9 D+ t: Y8 w
exit 1;% u/ c4 Q1 Z- i$ J
}
- q0 e4 e1 |. E( j
发表于 2015-6-29 23:19:58 | 显示全部楼层
学习下了 。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

SCMLife推荐上一条 /4 下一条

QQ|小黑屋|手机版|无图版|SCMLife.com ( 京ICP备06056490号-1 )

GMT+8, 2018-9-25 23:51 , Processed in 0.053348 second(s), 6 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

快速回复 返回顶部 返回列表