@
Aurora0 这个问题可能是因为 kill 掉进程后,端口还没有释放,导致新的进程无法绑定到该端口。你可以尝试在 kill 掉进程后,等待一段时间再执行部署新代码的操作,这样可以让端口有足够的时间释放。
例如,可以在 kill 掉进程后增加一条 sleep 命令,等待 1 秒钟,再执行部署新代码的操作,如下:
if [ -z "$pid" ];then
echo "不存在占用 8080 端口的进程";
else
kill -9 $pid;
echo "已开始强制 kill 掉 pid 为:$pid 的进程";
sleep 1
currentpid=$(ps -ef|grep develop|grep 8080| awk '{print $2}')
if [ -z "$currentpid" ];then
nohup java -jar develop.jar --server.port=8080 &
tail -f nohup.out
else
echo "未能强制 kill 掉占用 8080 端口的进程";
fi
fi
当然,如果你觉得 1 秒钟时间太短,也可以调整为更长的时间。