SCMLife.com

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4209|回复: 1

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

[复制链接]
发表于 2014-8-6 15:56:03 | 显示全部楼层 |阅读模式
#!/usr/bin/perl' Q( z: i5 g0 |0 x+ ^
  l7 j7 b! T" v. ^1 [
# Copyright Statement:
, R2 o5 L5 g, s, L$ N1 j( d" H' s) @# --------------------0 {$ ]# D# Z+ J' {. J% V
# This programe is kill the pid by the port!
: c6 M+ L/ s" O$ H! y( I#
4 V3 C. W4 P! B/ W7 o# @author: hakisman@gmail.com#  8 s! D' n8 n; v+ R
# Date: 2013.12.31#: i5 F0 L7 {  y" G8 N" T

' c/ V5 V( L1 L, Umy @PortArray = @ARGV;           
. s& p6 G8 @' F: Q  w* f0 U5 Gmy @PidArray;   
& P- y) G4 H6 qmy $result;   
1 u! j5 H7 H' [6 l4 x" ]( o4 Emy $i;1 r* N, @2 U8 m- Y* Z) T9 k
% R8 |2 F! {* t8 m. ?
if($#ARGV==-1){
/ O5 G% E5 a, T' W# U6 ~  print "ERROR:The number of parameters is wrong!\n";
4 j8 g" ?4 q8 h3 J- G% T# @    &Usage;
+ @" z& O' b) g0 m# K* U}) Q5 r- r  _  W8 O6 G- i- h
) _0 e! e2 C3 |) F  j
&checkPort;2 X; K+ r" Z; [  G; |
&getPid;7 @3 c  \4 q' e( K4 w
8 Z2 P  L) ?3 n& X0 c  n) S
for($i=0;$i<=$#PortArray;$i++){
+ {, P& }. T9 a* W4 @3 k9 h    print "The port $PortArray[$i]"."'s pid is $PidArray[$i]";6 M& b; O6 M1 a& Q
    print "kill -9 $PidArray[$i]";  b. Q: S  z/ s- r# U! s
    $result =`kill -9 $PidArray[$i]`;
$ B- C, k* F) N9 t; E% W0 j    #print "kill -9 $PidArray[$i] result is $result\n";
1 O5 _, T8 z5 I}
& t/ n1 D1 X# W+ x
( q' G3 {) G, U! a3 o3 jsub checkPort{
( ?/ W" C5 b4 Y( J- D1 M     for($i=0;$i<=$#PortArray;$i++){7 B* k/ [  m1 \
           if(($PortArray[$i] =~ /[^0-9]+/)||($PortArray[$i]<=1024)||($PortArray[$i]>=65536)){
# q, J8 M/ Z# G0 f7 p9 V. O7 V/ A             print "ERROR:The port you put is wrong!\n";, _" Q2 l  Y$ H) G4 x* j( f
               &Usage;
& A. p6 s" F5 r: w+ v$ C" s           }. a6 @, s3 ~% l) m3 F
     }
: ]5 u4 C, E) q0 \* s; }8 a2 d}
1 {7 h: B& o& _, I! \9 }; _0 x' G- u( h1 A9 T% p
sub getPid{
+ l3 A' D8 x% a* s; l    for($i=0;$i<=$#PortArray;$i++){$ t+ Q5 o8 S! {; `6 s
            my $commond = "netstat -tlnp|grep ".$PortArray[$i]."|awk '{print \$7}'|awk -F '/' '{print \$1}'";
: c2 Y$ [2 [. u1 T4 E( ^* f: a           #print $commond."\n";
( A# n  Y' z' H3 x' p+ r           my $Pid = `$commond`;
/ B# m- s9 y5 J  }  W7 v           if(($Pid == null)||($PortArray[$i] =~/[^0-9]+/)){
" y: E7 ^5 X. x7 J! p/ T1 R2 J             print "ERROR:The port can't retrun to the pid!\n";
: E+ R' X' b3 ~               &Usage;; O1 `! Z9 h& x! O, ~
           }   
2 S7 M9 z8 f0 X: e9 Z           push @PidArray,$Pid;    $ \$ P% D# r7 D% l
    }
+ Y1 H9 Z2 A7 N" t% s}9 }* Q! s8 Q# U! [  q( I2 K
0 E/ T; x1 V3 t
sub Usage {
) H  A* [  A$ L. q" B) A! d3 iwarn << "__END_OF_USAGE";
3 W7 A7 C$ s  w' o$ q        
" b! C/ `& @) u, e* d1 h- rUsage:+ D( m7 L2 P% [

5 j! s3 K3 [& M6 E  i) M  kport ["port"]...
, O& w) R2 p1 p$ Q2 c  1,The port must be a number.
( s2 M" p# w& B! `( k  n  2,The number of the port must Between 1024 and 65536.# [3 I# ~0 Z. x  m
  3,The port must be exits.
3 I$ S% Z5 ~1 E% K# b& w  ( `- L! }6 k7 @8 I2 G8 R5 x
/ e1 Z: P. h5 o0 g
Example:
# o, P# d8 V; o( M' X* B  kport 8080 8180 8280 8380. _2 `$ u6 E5 K; b/ E
  (Kill the pid by the port!)
6 H+ b5 J4 j" o; E7 Z1 @  .....
' E2 g7 Y( Z) f! G2 H0 f* \$ Q8 ^6 \5 W  v' F7 z4 X: ?
__END_OF_USAGE
5 |5 s& T# C( D8 F& @0 w   
* A" k! y7 V; O% N1 [; Hexit 1;
/ W' R8 g5 }, M}
! \! b( J# N; t& j8 q+ Y
发表于 2015-6-29 23:19:58 | 显示全部楼层
学习下了 。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

SCMLife推荐上一条 /4 下一条

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

GMT+8, 2019-10-16 08:58 , Processed in 0.059689 second(s), 6 queries , Gzip On, MemCache On.

Powered by SCMLife X3.4 Licensed

© 2001-2017 JoyShare.

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