我们在运行一些程序的时候,需要事先判断相应端口是否被占用,冒然启动程序,很可能会得到端口已被占用的错误,下面介绍两种方式获取进程PID。
方式一
lsof -nP -i:$port -sTCP:LISTEN -t
方式二
lsof -i:$port | awk '/\d/ {print $2}'
提示:$port是需要查询的端口号,命令返回占用端口进程的PID,没有被占用,则返回空。
如果需要在命令行简单查看端口占用的详情可使用下面这条命令
lsof -i:$port
提示:$port是需要查询的端口号。
小试牛刀
这是一个启动python项目的例子,名称为restart.sh
,启动前,检查所用端口是否被占用(PID不为空则为占用),占用则使用命令杀掉该进程,然后执行启动命令。
#!/usr/bin/env bash
port=9250
pid=`lsof -i:$port | awk '/\d/ {print $2}'`
if [ $pid ]; then
kill -9 $pid
fi
python3 manage.py runserver 0.0.0.0:$port