背景:
1、部署应用存在多端口使用,kill -9 发布应用时,存在端口无法释放的现象。
2、java应用jvm内存分配较大,kill -9 后进程不存在,但是内存资源被僵尸进程占用,未及时释放。
通过脚本,监控资源释放情况,待资源释放后重启新进程。
#!/bin/bash ############监控端口是否释放############ while : do netstat -lnp|grep 7001 returnVal01=$? netstat -lnp|grep 7002 returnVal02=$? if [[ $returnVal01 -eq 1 && $returnVal02 -eq 1 ]]; then break else echo $(date "+%Y-%m-%d %H:%M:%S") ":WARING: 7001/7002 Port still exists!!" sleep 1 continue fi done ############监控僵尸进程############ while : do ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' returnVal01=$? if [[ $returnVal01 -eq 1 ]]; then break else echo $(date "+%Y-%m-%d %H:%M:%S") ":WARING: There are zombie processes!!" sleep 1 continue fi done ###############监控僵尸进程是否存在,并进程查杀############ ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9