SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3339|回复: 1

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

[复制链接]
发表于 2014-8-6 15:56:03 | 显示全部楼层 |阅读模式
#!/usr/bin/perl
5 m% I: @3 {9 K" {& |5 D% ]. f4 L& [2 Z# l4 m5 h
# Copyright Statement:! h/ z5 X- V3 o
# --------------------( c, n. L1 M, e8 |
# This programe is kill the pid by the port!& n' Y$ K1 N& o. r9 n& e9 A/ R7 M
# % f- z5 l) O6 ~. n" a1 ?
# @author: hakisman@gmail.com#  
6 q2 U0 `$ q- }1 k$ c( _2 @! ~# Date: 2013.12.31#- R) ^- w+ l4 \+ Z2 w3 b
/ }$ e- y4 E, @# M3 @9 G7 p
my @PortArray = @ARGV;           5 j: }2 z  E% e3 H' H
my @PidArray;   : c: {% F- U5 _2 ~4 Y. H7 z# b) q" \
my $result;   
/ _! x5 J+ L- ^; y: o, \my $i;
8 M( l: m+ G7 y" z- ~2 M
- A. {" k4 f8 @4 q( }% M' tif($#ARGV==-1){
9 d  K7 Z6 K8 b& w6 m0 M# u; m  print "ERROR:The number of parameters is wrong!\n";+ h( ~& t/ e( O: K
    &Usage;
2 g% Q& D0 ^- g! }5 x& Z}/ J( n7 j( L' o9 s

$ e4 F* ?9 @; n5 p9 q$ T&checkPort;
, ~  H- i! |# W/ u- ~& M% e) d2 u* G&getPid;
, v0 [7 A% z; h; _. A
) O% r# @2 ], v- K; Y5 k- Afor($i=0;$i<=$#PortArray;$i++){
6 [# {3 o" [/ ^6 I9 ]  C    print "The port $PortArray[$i]"."'s pid is $PidArray[$i]";5 V3 N4 w0 R' H& F: d
    print "kill -9 $PidArray[$i]";
; M/ X0 h* n# n& T    $result =`kill -9 $PidArray[$i]`;) t5 F' K4 b9 K  D3 d7 v* \+ `( U
    #print "kill -9 $PidArray[$i] result is $result\n";
7 l  @) X  f9 V0 l}
! X& U, I- J* T- [' R8 y
) r* e- {- Q! i: fsub checkPort{
' ^: O% V+ e3 L- q     for($i=0;$i<=$#PortArray;$i++){5 [5 m! O" _% ^# f) r6 T+ V6 F2 W8 }
           if(($PortArray[$i] =~ /[^0-9]+/)||($PortArray[$i]<=1024)||($PortArray[$i]>=65536)){
9 b* v" v3 a  e- K" T             print "ERROR:The port you put is wrong!\n";
- S+ e# Y, q; C+ o  x* B               &Usage;9 u& N! T  X  e
           }
, J) A3 J, h- m# L     }% H; C: u/ k; a' F0 D$ E6 H
}! u* f) o: n, ]! X+ ^
9 V3 \5 G, F/ q0 e# ]. K) x/ r
sub getPid{+ d; Y$ D8 Q0 H! L: c( }: `$ `/ S
    for($i=0;$i<=$#PortArray;$i++){4 \* w/ h  w* x7 }2 f& j0 ?/ ~
            my $commond = "netstat -tlnp|grep ".$PortArray[$i]."|awk '{print \$7}'|awk -F '/' '{print \$1}'"; " E6 a5 `4 r. ]$ w
           #print $commond."\n";( q7 {* b3 A/ g3 s; u0 P; o
           my $Pid = `$commond`;4 N2 z9 p* f$ ~
           if(($Pid == null)||($PortArray[$i] =~/[^0-9]+/)){* i2 Y% f- A" {0 n
             print "ERROR:The port can't retrun to the pid!\n";8 h/ M/ u' L; w/ [
               &Usage;# v& f7 x: w$ x0 k8 y5 `( N
           }    4 Q. p' o# k, c# [$ g! A: ^
           push @PidArray,$Pid;    ! P& |: i- ^3 m6 G: D
    }
. z/ R$ h( \) n3 S8 a6 ^8 `}
) W! R- F6 j/ e9 _* x
3 C4 y# w5 f* Esub Usage {" m2 j- r7 l# y
warn << "__END_OF_USAGE";
- a$ ?+ [3 [) H" t        # O* Z2 U3 m5 q; o
Usage:* r: I; c4 P% J  e  ]5 x. J# x  P& Z

  M$ d9 c# f' p0 m( a, R8 x  kport ["port"]...7 |7 ?: Q3 R1 P8 F' Z* C
  1,The port must be a number.2 ]$ H! P' D% o1 l4 J' T
  2,The number of the port must Between 1024 and 65536.
; S$ [, t: m8 T  U( y0 s0 S  3,The port must be exits.
3 @. I: X% ^' [9 ~# {7 s; ^  
+ |/ T0 z, [. ]7 q4 B# l
; S# w( S1 k6 [- YExample:; L+ \* D% s1 A7 J6 ~
  kport 8080 8180 8280 8380
. z! U, m* a* o' S' C3 f  (Kill the pid by the port!)  r' u; o2 |6 R( ?
  .....7 q2 r, s8 N4 b. b0 b: D

2 B* Q# _. Z* L4 I5 `6 {& P__END_OF_USAGE
& K& _0 x, U8 e  X% D, `  c   
, q# C% v$ y; g. c( G0 dexit 1;" A& n: t' V, J0 A
}# A0 o7 g$ ^+ h9 t) \0 E
发表于 2015-6-29 23:19:58 | 显示全部楼层
学习下了 。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

SCMLife推荐上一条 /4 下一条

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

GMT+8, 2018-6-22 03:24 , Processed in 0.064130 second(s), 6 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

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