原来的脚本还有点问题这个应该是没问题了,主要是有些程序是ROOT全权启动的
有道云笔记 https://note.youdao.com/s/YQszX277

使用方法:
简单使用 把下面代码保存 PORT-OK.sh
给权限 chmod -R 755 PORT-OK.sh
使用./PORT-OK.sh
空格 端口 比如./PORT-OK.sh 8888
这个默认是宝塔的
#!/bin/bash
#netstat -lntp
tishitishitishi="如果你的系统拥有ROOT权限"
echo -e "${tishitishitishi} 把保存后的脚本 sudo lsof 替换成lsof也就是不需要sudo \n并且把包含\$USER的行删掉"
echo "${tishitishitishi} 这一行 sudo \${dockerduankou}/kill/PORT-DATA.log.sh 把sudo删掉"
echo -e "需要管理员权限,请输入开机密码 ${tishitishitishi}请忽略"
date +%Y年%m月%d日%H:%M:%S
#------------------------------------------------------
denden_d="======================================================"
dockerduankou="/tmp/docker-duankou4d6w4wq"
rm -rf ${dockerduankou}
mkdir -p ${dockerduankou}/kill
#################
# 输出检测端口日志
#################
#端口
PORT_0=$1
duankouA="0"
#应为一些端口是ROOT权限启动的,还有的是用户权限启动的,合并写在一起
sudo lsof -i :${PORT_0} |grep "root" |awk '{print $2}' >> ${dockerduankou}/0.txt
sudo lsof -i :${PORT_0} |grep "$USER" |awk '{print $2}' >> ${dockerduankou}/0.txt
sudo lsof -i :${PORT_0} >> $HOME/端口占用的程序.txt
#0.txt是0行就是没有被占用
Duankou_LONG_0=$(cat ${dockerduankou}/0.txt | wc -l)
if [[ ! X${duankouA} = X${Duankou_LONG_0} ]];then
echo "端口 ${PORT_0}已被占用"
else
echo "端口 ${PORT_0}未被占用"
fi
cat ${dockerduankou}/0.txt >> ${dockerduankou}/PORT.log
#去除重复行和空行 应为有些系统没有用户只有系统用户ROOT 这个时候 $HOME 就是root
sort -k2n ${dockerduankou}/PORT.log | awk '{if ($0!=line) print;line=$0}' |awk NF > ${dockerduankou}/PORT-DATA.log
sed -e 's/^/kill -9 /' ${dockerduankou}/PORT-DATA.log > ${dockerduankou}/kill/PORT-DATA.log.sh
rm -rf "$HOME/端口占用的程序.txt"
echo "$HOME/端口占用的程序.txt 如果是空文件就是没有占用的"
####################
# 杀死占用端口的程序
####################
echo "${denden_d}"
杀死占用端口的程序(){
tixing_A=$(echo -e "杀死占用端口的程序 --> 输入大写字母 Y 继续执行脚本!!!\n>:")
while true ; do
read -p "${tixing_A}" var;
if [ -z $var ];then
echo "输入不能为空"
elif [[ ! $var =~ ^[Y]+$ ]];then
echo "输入的不是字母,请重新输入!"
else
chmod -R 755 ${dockerduankou}/kill/PORT-DATA.log.sh
#当满足输入条件时,跳出所有循环
break;
fi
done
}
run_sh_wc=$(cat ${dockerduankou}/kill/PORT-DATA.log.sh | wc -l)
if [[ ! X${duankouA} = X${run_sh_wc} ]];then
`杀死占用端口的程序`
sudo ${dockerduankou}/kill/PORT-DATA.log.sh
echo "OK占用端口已释放!!!"
else
echo "端口检查通过!!!"
fi
sleep 1
值此新年到来之际,淇云博客祝贵站在新的一年发大财,行大运
看看怎能弄得
期待更多的图片内容
大佬 厉害