셸 스 크 립 트 - 정기 적 으로 좀 비 프로 세 스 정리 (임시 해결 방법)

1790 단어 linuxshell
좀 비 진행 원인 파악:
좀 비 프로 세 스 는 exit 시스템 을 통 해 호출 되 거나 실 행 될 때 치 명 적 인 오류 가 발생 하거나 종료 신 호 를 받 은 것 을 말 합 니 다. 그러나 운영 체제 프로 세 스 표 에는 '종료 상태' 에 있 는 표 항목 이 있 습 니 다.이 는 하위 프로 세 스 가 하위 프로 세 스 를 읽 을 수 있 도록 표 항목 을 유지 해 야 하 는 exit status 에서 발생 합 니 다. 종료 상태 가 wait 시스템 호출 을 통 해 읽 으 면 좀 비 프로 세 스 항목 은 프로 세 스 표 에서 삭 제 됩 니 다. 이 과정 은 reap 이 라 고 합 니 다.정상 적 인 상황 에서 프로 세 스 는 아버지 프로 세 스 wait 에 의 해 직접 회수 되 고 시스템 에 의 해 회수 되 며 프로 세 스 가 장시간 좀 비 상 태 를 유지 하 는 것 은 잘못 되 고 자원 이 누 출 됩 니 다.이 서버 에 서 는 top 명령 을 실행 하면 zombie 항목 의 데이터 가 0 이 아 닌 것 을 볼 수 있 습 니 다.
실제 응용 프로그램 에서 kill 명령 은 좀 비 프로 세 스 에 유효 하지 않 습 니 다.좀 비 프로 세 스 가 reap 되면 프로 세 스 번호 와 프로 세 스 표 에 있 는 표 항목 을 시스템 에서 다시 사용 할 수 있 습 니 다.그러나 부모 프로 세 스 가 wait 를 호출 하지 않 으 면 좀 비 프로 세 스 는 프로 세 스 표 의 표 항목 을 유지 하여 자원 이 누 출 됩 니 다.reap 좀 비 프로 세 스 는 kill 명령 을 통 해 부모 프로 세 스에 SIGCHLD 신 호 를 수 동 으로 보 내 는 방식 입 니 다. 부모 프로 세 스 가 reap 좀 비 프로 세 스 를 거부 하면 부모 프로 세 스 를 종료 하고 init 프로 세 스 가 좀 비 프로 세 스 를 입양 하도록 합 니 다.init 프로 세 스 주기 에 wait 시스템 이 입양 한 모든 좀 비 프로 세 스 를 호출 합 니 다.
좀 비 배치 프로 세 스 청소 스 크 립 트 열기
1. 좀 비 프로 세 스 검사 스 크 립 트 작성
vi killall_zombie.sh

다음 내용 을 입력 하 십시오:
#!/bin/bash
zombie_check=`ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]'`

if [ -n "$zombie_check" ];
 then
 echo "Start to handle the z0mbie!!!!!"
 for i in `ps aux |grep -w Z |grep -v grep |awk '{print $2}'`
 do
 `ps -ef |grep $i |grep defunct|awk '{print "kill -9 " $2 " "$3}'`
 done
else
 echo "There is no zombie !!!!!"
fi

저장 종료.
2. 정시 설정 퀘 스 트 추가
예제: 스 크 립 트 이름 killzombie. sh, 스 크 립 트 위 치 는/data/scripts/이 며, 주파 수 는 한 시간 에 한 번 씩 검 측 (시간, 스 크 립 트 위 치 는 스스로 수정 하 십시오) crontab - e
0  */1  *  *  *  /shells/kill_zombie.sh 

저장 종료.

좋은 웹페이지 즐겨찾기