我需要这个,因为我的共享托管计划的进程限制为 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
)。