如果正在运行的进程数量超过 20,如何杀死 /opt/php56/bin/php-cgi 的所有实例?

如果正在运行的进程数量超过 20,如何杀死 /opt/php56/bin/php-cgi 的所有实例?

我需要这个,因为我的共享托管计划的进程限制为 25。每当进程限制超过 25 个时,我的网站就会给出一个错误500

我想要做的是构建一个脚本, /opt/php56/bin/php-cgi如果正在运行的进程数量超过 20,该脚本将杀死该进程的所有实例。我构建了一个 cron 作业,每 5 分钟运行一次该脚本。

答案1

作为一个小 shell 脚本:

#!/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)。

相关内容