SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3989|回复: 1

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

[复制链接]
发表于 2014-8-6 15:56:03 | 显示全部楼层 |阅读模式
#!/usr/bin/perl
, @! ~- B0 i& y2 |
8 p8 F# }1 e- @, R. v  Z# Copyright Statement:8 X& @3 ?" Q7 M) O( S
# --------------------
( N0 G0 {" h/ I* }. c+ b/ b# u" t# This programe is kill the pid by the port!
) y: ~5 V" `  f. U#
# a8 _! g4 I5 R/ G+ r$ D) ?# @author: hakisman@gmail.com#  0 H2 e) w+ a- \% Y  ]
# Date: 2013.12.31#- @0 G; g' Y' w4 L" a& }( J
7 u" b# @. u/ `# }# J
my @PortArray = @ARGV;           
/ a- d6 p' t( A7 a: U! ^my @PidArray;   
& L7 h* s) Y$ L4 ?4 f5 emy $result;   
+ |5 D' e1 V1 \2 Zmy $i;
4 Y8 D! P, i" H: o9 s& A; I+ b* L* |! W+ k/ L
if($#ARGV==-1){
3 d! n- N' i& u9 x1 b0 L  print "ERROR:The number of parameters is wrong!\n";
+ C6 m- Z' U( n( ^    &Usage;
, k" u" v$ J' q% c}/ A; \7 A$ U+ G$ G$ P2 }+ f

# G) d: o' j. L) F/ [) E/ ?' C&checkPort;
$ k5 w1 X. P2 y7 L1 I&getPid;; _5 i/ Y7 @" ^( R7 S. w
. B0 B! q$ H  e, p4 ^& j
for($i=0;$i<=$#PortArray;$i++){
, X* S) u& O# M" r    print "The port $PortArray[$i]"."'s pid is $PidArray[$i]";
9 c9 e5 x; C# w! X- l; V% W    print "kill -9 $PidArray[$i]";" A3 D! @: i! M% O
    $result =`kill -9 $PidArray[$i]`;
/ G" G  ^; [8 X' I( S    #print "kill -9 $PidArray[$i] result is $result\n";
* s- x$ G+ P3 Z  q+ _}- O# N, g3 k$ }
7 y) H4 @4 p0 y* v' i: s
sub checkPort{
4 P/ D! P% C1 K/ V( ]) y     for($i=0;$i<=$#PortArray;$i++){
4 ]( W! s  s. f' R7 b% W$ f7 ^7 A, ?           if(($PortArray[$i] =~ /[^0-9]+/)||($PortArray[$i]<=1024)||($PortArray[$i]>=65536)){4 w! K& ~0 q: x# ^# a5 {
             print "ERROR:The port you put is wrong!\n";
) z) [/ m( t& b! f9 U& A( o" d               &Usage;1 h* T1 C- X3 {; g& j
           }! k3 ~) R: |! d7 A- s; Z) u0 L2 Y6 T
     }
' V" G3 T3 P2 Q/ n' x  ^7 \; U- }}
6 ]- g0 Z2 j! h! L) Y
9 w* m( w4 X) S$ i2 S5 ksub getPid{: v) R( @" o& G: X: S# _; `6 m
    for($i=0;$i<=$#PortArray;$i++){
3 W& b* X5 H) P- Q            my $commond = "netstat -tlnp|grep ".$PortArray[$i]."|awk '{print \$7}'|awk -F '/' '{print \$1}'";
5 H. _7 L' U& h" J           #print $commond."\n";
/ h, m/ z6 x$ u6 s/ ~           my $Pid = `$commond`;
& U+ b! d& M/ W. R5 b           if(($Pid == null)||($PortArray[$i] =~/[^0-9]+/)){3 }0 l3 K4 K, u4 X5 r  r7 X
             print "ERROR:The port can't retrun to the pid!\n";; S. N+ _% y, B7 B
               &Usage;- U* n, K* T, |+ f% m
           }   
$ P( Q% M# f) L, O5 @           push @PidArray,$Pid;   
0 H$ D7 r$ i9 t5 {3 N    }
) L3 w5 I2 l5 X# P}
2 `, x, {8 B0 J( K1 R
/ [" Q4 _' n, A! vsub Usage {. x% s5 L7 y0 m) j1 E3 r
warn << "__END_OF_USAGE";1 E# `7 `2 H9 j9 ]
        * k) K2 d- y+ e
Usage:
' l# n% \' `7 S+ F# w0 g1 s
" n& k6 J. n" v" v  kport ["port"]...3 K$ e. s$ `, h8 y' L, D
  1,The port must be a number.* O& C* j0 e4 H% X7 T
  2,The number of the port must Between 1024 and 65536.7 G0 m& l, `0 [6 x7 K/ C
  3,The port must be exits.
' f4 W9 q5 O- N7 W& k0 z( k  
, H% y: S9 m& }' F% F+ s4 r% I
0 ^8 k3 C$ y) u' dExample:! F" B. T8 d5 i# X' d4 R
  kport 8080 8180 8280 8380
8 b$ ~7 [7 e6 ^1 d( n. ]0 l9 ^9 J3 K  (Kill the pid by the port!)
0 n1 X+ T; M$ N2 q6 u6 N  .....
9 |+ |! C7 {+ n% K) }& c: I. }0 d0 t
__END_OF_USAGE0 A* l5 |8 q9 e5 K
   
* q4 {2 |/ M5 E3 b6 H2 e6 Z: sexit 1;: O- `! Y: B5 \0 g) o0 K
}
) l, b( J. l$ z/ g( x: ~
发表于 2015-6-29 23:19:58 | 显示全部楼层
学习下了 。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

SCMLife推荐上一条 /4 下一条

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

GMT+8, 2019-4-24 11:08 , Processed in 0.061618 second(s), 7 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

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