私の共有ホスティングプランのプロセス制限は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
)。