windows和linux根据端口号杀掉进程脚本

windows

创建killport.bat,脚本内容如下
@echo off
set port=20002
for /f "tokens=5" %%a in ('netstat /ano | findstr %port%') do taskkill /F /pid %%a
//for循环,提取第5个字段(从命令的结果中)赋予到变量a,并执行杀进程调用变量a
pause

上面那个脚本文件中端口号写死了,可以提取出来当成参数传递

@echo off
set port=%1
for /f "tokens=5" %%a in ('netstat /ano | findstr %port%') do taskkill /F /pid %%a
//for循环,提取第5个字段(从命令的结果中)赋予到变量a,并执行杀进程调用变量a
pause

调用方式:killport.bat 20002

linux

根据传入参数的端口号,杀掉进程
killport脚本如下(文件名killport)

# !/bin/bash  
# Description: kill process by port  
# Usage:       killport port  
# example:     killport 8080
pid=`netstat -tlnp | grep "$1" | awk '{print $7}' | awk -F '/' '{print $1}'`
kill -9 $pid

将脚本文件killport放到/etc/init.d/文件夹下,也可以是其他的,
脚本文件添加执行权限:

chmod +x /etc/init.d/killport

#创建软连接

cd /usr/bin     
ln -s /etc/init.d/killport

调用方式:killport 20002

中间可能会出现的错误:
1、arguments must be process or job IDs 错误

下面代码 = 后面 是 ` ,这个字符是键盘上tab键上面的那个按键打出来的,如果不是可能会出现这个错误
pid=`netstat -tlnp | grep "$1" | awk '{print $7}' | awk -F '/' '{print $1}'`

2、执行脚本出现No such file or directory错误
出现这个错误的原因可能是文件格式的问题,因为在windows系统编写的文件格式是dos格式,linux系统需要使用unix格式
1)、修改和查看文件格式命令
用vim打开killport文件
执行查看文件格式命令:

:set ff 

回车,显示fileformat=dos,需要重新设置文件格式,
重新设置下文件格式命令:

:set ff=unix

保存并退出:

:wq


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部