Php 我怎样才能终止匹配超过30分钟的grep的进程?
我有一组并行运行的进程 有时,有些脚本的挂起时间比脚本允许的时间长:Php 我怎样才能终止匹配超过30分钟的grep的进程?,php,linux,unix,grep,kill,Php,Linux,Unix,Grep,Kill,我有一组并行运行的进程 有时,有些脚本的挂起时间比脚本允许的时间长: $time_start = microtime(true) $max_run_time = 30 * 60; // 30 minutes, measured in seconds while ((microtime(true)-$time_start) < $max_run_time) { // do stuff, but quit after 30 minutes } 我可以使用`pkill-f“php/pa
$time_start = microtime(true)
$max_run_time = 30 * 60; // 30 minutes, measured in seconds
while ((microtime(true)-$time_start) < $max_run_time) {
// do stuff, but quit after 30 minutes
}
我可以使用`pkill-f“php/path/to/my/script.php”杀死它们
但是我如何才能杀死旧的进程呢?要获得名为
PROCESS\u NAME
且运行时间超过30分钟的进程列表,请
可以发出以下awk
命令:
ps ax -ocmd,pid,etime | awk '/PROCESS_NAME/{split($(NF),a,":");if(a[1]>30)print}'
要仅获取pids,请运行
ps ax -ocmd,pid,etime | awk '/PROCESS_NAME/{split($(NF),a,":");if(a[1]>30)print $(NF-1)}'
您可以通过管道将其传输到xargs kill
,如下所示:
ps ax -ocmd,pid,etime | awk '/PROCESS_NAME/{split($(NF),a,":");if(a[1]>30)print $(NF-1)}' \
| xargs kill
类似于:
ps-lf | grep“script.php”| perl-ane'($h,$m,$s)=split/:/,$F[13];杀死+9,$F[3],如果($m>30)代码>。。需要添加小时检查,否则将错过超过一小时且少于X小时30分钟的检查ps ax-ocmd、pid、etime
仅显示进程名称的前27个字符。如果我只是根据这27个字符进行搜索,其余的就可以了,但是我需要完整的进程名来根据需要进行选择。有什么建议吗?这给了我完整的路径,但似乎没有基于>30分钟的限制ps-axwww-o pid,etime,command | awk'/script.php/{split($(NF),a,“:”);if(a[1]>30)print}
我使用的是ps-oetime
,它确实尊重执行时间。但是如果我在运行命令之前运行grep script.php
,我将在命令的结果中看到saidgrepscript.php
,执行时间仅为00:01。如果有必要,我正在运行Centos 6.6。awk
进行过滤,而不是ps
。如果您运行我的第一个命令(未更改),您将无法运行少于31分钟的进程。
ps ax -ocmd,pid,etime | awk '/PROCESS_NAME/{split($(NF),a,":");if(a[1]>30)print $(NF-1)}' \
| xargs kill