![실행 중인 프로세스 수가 20개를 초과하는 경우 /opt/php56/bin/php-cgi의 모든 인스턴스를 종료하는 방법은 무엇입니까?](https://linux55.com/image/115881/%EC%8B%A4%ED%96%89%20%EC%A4%91%EC%9D%B8%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%20%EC%88%98%EA%B0%80%2020%EA%B0%9C%EB%A5%BC%20%EC%B4%88%EA%B3%BC%ED%95%98%EB%8A%94%20%EA%B2%BD%EC%9A%B0%20%2Fopt%2Fphp56%2Fbin%2Fphp-cgi%EC%9D%98%20%EB%AA%A8%EB%93%A0%20%EC%9D%B8%EC%8A%A4%ED%84%B4%EC%8A%A4%EB%A5%BC%20%EC%A2%85%EB%A3%8C%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
내 공유 호스팅 계획의 프로세스 제한이 25이기 때문에 이것이 필요합니다. 프로세스 제한이 25를 초과할 때마다 내 웹사이트에서는오류 500.
내가 원하는 것은 /opt/php56/bin/php-cgi
실행 중인 프로세스 수가 20개를 초과하는 경우 프로세스의 모든 인스턴스를 종료하는 스크립트를 작성하는 것입니다. 5분마다 스크립트를 실행하도록 크론 작업을 구축했습니다.
답변1
작은 쉘 스크립트로:
#!/bin/sh
if [ $(pgrep -cf /opt/php56/bin/php-cgi) -gt 20 ]
then
pkill -f ./opt/php56/bin/php-cgi
fi
정규식 -c
일치하는 인스턴스를 계산한다고 말합니다. -f
전체 프로세스 이름과 일치한다고 말합니다. 20보다 큰 경우(필요에 따라 숫자 조정) 적절한 pkill 명령을 실행합니다.
총 프로세스 수가 20개를 초과하면 해당 프로세스를 종료합니다.
if [ $(ps -e -o pid= | wc -l) -gt 20 ]
then
pkill -f ./opt/php56/bin/php-cgi
fi
이 ps
줄은 모든( -e
) 프로세스를 수집하고, 필드만 인쇄하고 pid
, 해당 열의 이름이 바뀐 헤더로 (아무것도) 사용하지 않음을 pid
의미합니다. 즉, "PID" 헤더를 표시하지 않음을 의미합니다. 그런 다음 결과 줄에서 프로세스 수를 계산합니다. ( wc -l
).