Como eu mato todas as instâncias de / opt / php56 / bin / php-cgi se o número de processos em execução exceder 20?

0

Eu preciso disso porque o meu plano de hospedagem compartilhada tem um limite de processo de 25. Sempre que houver um limite de processo acima de 25, meu site gerará um erro 500 .

O que eu quero fazer é criar um script que mate todas as instâncias do processo /opt/php56/bin/php-cgi se o número do processo em execução exceder 20. Eu construo uma tarefa cron para executar esse script a cada 5 minutos.

    
por user3412432 10.08.2017 / 01:21

1 resposta

0

Como um pequeno script de shell:

#!/bin/sh

if [ $(pgrep -cf /opt/php56/bin/php-cgi) -gt 20 ]
then
  pkill -f ./opt/php56/bin/php-cgi
fi

pgrep -c diz para contar as instâncias correspondentes; -f diz para corresponder ao nome completo do processo. Se houver estritamente mais de 20 (ajuste esse número a gosto), execute o comando pkill correspondente.

Para eliminá-los, se o número total de processos for maior que 20:

if [ $(ps -e -o pid= | wc -l) -gt 20 ]
then
  pkill -f ./opt/php56/bin/php-cgi
fi

Essa linha ps diz para reunir todos os processos ( -e ), imprimir apenas o campo pid e usar (nada) como cabeçalho renomeado para a coluna pid - significado, don ' t exibir o cabeçalho "PID" - e depois contar o número de linhas resultantes ( wc -l ).

    
por 10.08.2017 / 01:51