前言

最近在摸索vue。令我头疼的一件事是,如果以外关闭了启动的服务,就会重新开一个端口,这样很不友好,每次还得重新输入到浏览器上一个新的端口。即使是复制到浏览器的地址栏上,也是很繁琐的。

一遍,一遍,又一遍。

啊啊啊

如下图,第一次启动是3000
在这里插入图片描述
无故关闭了,就会重新启动一个新的端口
在这里插入图片描述
真的很烦。

今天,我终于受不了啦。

笨人的解决方案

1、先查出来占用端口的PID

zhenghui@192 ~ % lsof -i:3000
COMMAND   PID     USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
node    17178 zhenghui   24u  IPv4 0xc012b2e327127691      0t0  TCP *:hbci (LISTEN)
zhenghui@192 ~ %

2、使用kill结束进程

kill -9 17178

重复几十遍你试试。
在这里插入图片描述

聪明人的解决方法

1、创建一个脚本,内容如下:

zhenghui@192 ~ % cat ks.sh
data=`lsof -i:3000|awk '{print $2}' | sort | uniq -d `
for d in $data
do
	echo $d
	kill -9 $d
done
zhenghui@192 ~ %

2、想杀死进程时,直接运行

sh ks.sh

进阶(青铜)

zhenghui@192 ~ % cat ks.sh.bak


data=`lsof -i:$1|awk '{print $2}'`


echo "共:$data"

#用于累加计数,用于跳过第一个标题
count=0

for d in $data
do
	if [ "$count" -gt 0 ];then
		echo 正在结束:$d
		kill -9 $d
	fi

	#每次累加1
	count=$((${count}+1))
done

进阶(王者)

zhenghui@192 ~ % cat ks.sh

data=`lsof -i:$1 -t`

echo "共:$data"

for d in $data
do
	echo 正在结束:$d
	kill -9 $d
done

zhenghui@192 ~ %

1、lsof命令常用参数

-a : 结果进行“与”运算(而不是“或”)
-l : 在输出显示用户ID而不是用户名
-h : 获得帮助
-t : 仅获取进程ID
-U : 获取UNIX套接口地址
-F : 格式化输出结果,用于其它命令。可以通过多种方式格式化,如-F pcfn(用于进程id、命令名、文件描述符、文件名,并以空终止)

Logo

前往低代码交流专区

更多推荐