내 공유 호스팅 계획의 프로세스 제한이 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
).