在开启一个新的任务进程之前,需要获取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' => '服务器繁忙,请稍后重试']; }
真实环境中使用请多测试几次,保证搜索的关键字唯一,不要把别的命令也统计进去了。