Linux使用ps+grep+wc统计某正在运行进程的数量

在开启一个新的任务进程之前,需要获取Linux服务器当前正在运行某个进程的数量,以便对新进程的添加进行限制,我们知道ps命令可以查看进程,grep命令可以对内容进行检索,wc命令可以统计,我们把这三个命令结合起来就可以实现需求了。

直接上命令:

ps -ef | grep queue | grep -v grep | wc -l

具体参数是可以调整的,命令的意思就是查找含有queue关键词的进程(去掉grep本身),输出找到的进程数量。

运行结果:

[root@localhost ~]# ps -ef | grep queue | grep -v grep
root      4552  2822  0 10:14 ?        00:00:00 php yii parse-queue/listen 10
root      4553  2822  0 10:14 ?        00:00:00 php yii queue/listen 10
[root@localhost ~]# ps -ef | grep queue | grep -v grep | wc -l
2

可以看到这里有两个队列监听进程中含有queue

结合一下php

$cmd = 'ps -ef | grep api/import | grep -v grep | wc -l' . ' 2>&1';
exec($cmd, $out);
reset($out);
// 如果含关键字"api/import"进程数量大于1,则阻止新建进程
if (isset($out[0]) && intval($out[0]) > 1) {
    return ['status' => 'error', 'message' => '服务器繁忙,请稍后重试'];
}

真实环境中使用请多测试几次,保证搜索的关键字唯一,不要把别的命令也统计进去了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注