参考:shell判断8000端口是否被占用并杀死占用端口进程
1. 需求
- 检查端口 6789 是否被占用,如果被占用,kill 掉对应的进程,启动我们自己的程序
2. 实现脚本
#!/bin/bash
curdir=$(dirname $0)
#获取6789端口的第七列的值给perpid变量
perpid=`netstat -tunlp|grep 6789 |awk '{print $7}'`
if [ $perpid ];then
#从后开始删除变量,删除到第一个/停止,赋值给apid
apid=${perpid%/*}
echo "获取 6789 端口进程号:$apid"
#杀死进程
kill -9 $apid
echo "杀死占用 6789 端口进程(pid:$apid)"
else
echo "没有进程占用 6789 端口"
fi
# 让程序在后台运行
nohup /usr/bin/python $curdir/upgrade_service.py > nohup.log 2>&1 &