Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我怎样才能终止匹配超过30分钟的grep的进程?_Php_Linux_Unix_Grep_Kill - Fatal编程技术网

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
,我将在命令的结果中看到said
grepscript.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