SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3892|回复: 1

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

[复制链接]
发表于 2014-8-6 15:56:03 | 显示全部楼层 |阅读模式
#!/usr/bin/perl# b: o1 e% q2 F2 U- v) F

! q* G+ l8 J( D+ Z! N# Copyright Statement:6 Z- E1 I3 b' t: _7 [
# --------------------
7 @+ ~! S) F+ [# This programe is kill the pid by the port!' w1 c" j3 M) y4 J3 g/ O2 g
#
' k2 y2 r: h+ w# V& A+ v: N, P$ J# @author: hakisman@gmail.com#  / c0 Z! G% `) n$ Q+ p& w
# Date: 2013.12.31#! _5 N- M8 b( A

/ }% v5 A7 j- c1 R9 P; x$ @my @PortArray = @ARGV;           % r& F7 V! q" h' |! b  A! s& D
my @PidArray;   $ L9 ]7 I0 \1 }3 O
my $result;    7 T2 ^3 w8 n3 E+ f. O) L
my $i;: i6 p% B4 I  ^

) g8 o7 P0 F& R) c& \6 u$ wif($#ARGV==-1){) I7 ]6 {) o; Z4 T& n. T
  print "ERROR:The number of parameters is wrong!\n";3 b% d) G( [# T: G) ~0 r! T8 C
    &Usage;
8 x& H# {9 o4 f/ F- r* m}
4 Q. Y+ ?0 `# X. e! Q. Z: v7 c- D8 B1 ?% ]. Q
&checkPort;
2 U" L' J- h7 o+ h: o" Q&getPid;
/ T( f. N; G1 w" y, n( e
  s! Y. B9 i/ ^0 \! Sfor($i=0;$i<=$#PortArray;$i++){
2 H7 c7 X- Y: J$ ~! L4 y    print "The port $PortArray[$i]"."'s pid is $PidArray[$i]";
. d5 c4 }& R9 U5 K/ I% B, Y; h    print "kill -9 $PidArray[$i]";* X0 [8 d% {/ I# c- D' ~" U  x$ o
    $result =`kill -9 $PidArray[$i]`;
: }% W, P3 S3 D5 |; X+ G, M/ x3 c. T    #print "kill -9 $PidArray[$i] result is $result\n";
) d# D4 t' ]: T; B}
* T& C! H9 V3 b+ V3 A- X( C4 ]* I" U' N" V. c, i
sub checkPort{
: @$ V6 ?% G9 ]' k     for($i=0;$i<=$#PortArray;$i++){& M5 q8 ~! N$ h3 ]
           if(($PortArray[$i] =~ /[^0-9]+/)||($PortArray[$i]<=1024)||($PortArray[$i]>=65536)){& X5 ?) }2 A7 b9 x9 X. V5 K
             print "ERROR:The port you put is wrong!\n";" T6 X. H, N7 [6 X( X! `- B
               &Usage;
3 o: T0 {/ {* o* K  f/ l3 d: N           }
5 j/ B2 ^- G: Q     }5 G/ E# P, n) N6 w( F/ L! `
}& b0 H; l7 _' H1 f

7 w# ?% f# q' Z, Msub getPid{
( L; j6 |( \  v/ I& U    for($i=0;$i<=$#PortArray;$i++){
1 D* P/ n* c1 m$ Q            my $commond = "netstat -tlnp|grep ".$PortArray[$i]."|awk '{print \$7}'|awk -F '/' '{print \$1}'"; 2 m' C2 O  ?3 o) H
           #print $commond."\n";
" S. L3 F! c  _2 C           my $Pid = `$commond`;
  R9 @/ V' }3 W  W) M           if(($Pid == null)||($PortArray[$i] =~/[^0-9]+/)){
1 j; {. d; C1 S4 J4 P- J, r             print "ERROR:The port can't retrun to the pid!\n";5 x3 |8 B# v1 }$ C2 E9 f; `: E% D" {
               &Usage;
! |, g4 F8 J) r1 V. _6 v) s0 Y           }    ! v. C% Q* E% k: ^2 ~/ q
           push @PidArray,$Pid;    & J+ [  R4 _1 h7 H/ D
    }5 w! P: O5 N' J! s
}
: U2 l0 x" t# A3 L; L' z( m
% _: h/ p0 ?+ y( k' p! {6 msub Usage {# B: o7 V8 }% ^: J* P# D
warn << "__END_OF_USAGE";
* c4 x! {" H) p6 q; @        
+ j& J4 K, C, V+ L) m: N( gUsage:
4 V. f% {! Q3 L) |' S1 i$ W
2 P! x0 ~" x) P: X  kport ["port"]...
( c# G6 n& b+ G* x* _- ^8 {  1,The port must be a number.
9 ]0 Z: M% ~+ s  2,The number of the port must Between 1024 and 65536.+ c! j9 g, J- D' X- Q* M
  3,The port must be exits.
' T) N/ m1 x1 k3 f3 `7 t  
' m9 J2 P: x, M& `
3 A6 [2 q$ w& |1 B$ gExample:
& x' x/ ^$ {8 s- q  kport 8080 8180 8280 8380' j# s" y/ A: Q, p7 Y8 x% d
  (Kill the pid by the port!)* u- t, x9 m# B/ U" C7 `% `. r
  .....3 V' o! Q# X& R# H! ~$ h6 p* Z
; i0 V) {) S( d; @: K( q5 ~
__END_OF_USAGE
) z- W% F! D- K* V" b. J   
  y5 u- D6 {/ K# `. F% h9 M8 Nexit 1;" ^  h9 K# U1 Y! [+ ^( c6 k
}; y6 M3 u, i: X; v& t& M' `' n
发表于 2015-6-29 23:19:58 | 显示全部楼层
学习下了 。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

SCMLife推荐上一条 /4 下一条

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

GMT+8, 2019-2-19 18:01 , Processed in 0.066528 second(s), 6 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

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