2012-12-28 47 views
1

我知道如何检查方法的一个实例正在运行,但我怎么检查不同的参数运行例如PHP - 如何检查是否处理与多个参数运行

/usr/local/bin/foo --config /home/config1.txt 
/usr/local/bin/foo --config /home/config2.txt 

下面的代码特定进程只检查进程名称,如何检查进程是否正在运行特定参数?

function is_process_running ($process_name) { 
    $result = array(); 
    exec("/sbin/pidof {$process_name}", $result); 
    if(is_array($result) && isset($result[0]) && $result[0] >= 1) { 
     return true; 
    } 
    return false; 
} 

is_process_running('/usr/local/bin/foo --config /home/config1.txt') returns true 
is_process_running('/usr/local/bin/foo --config /home/config3.txt') returns false 

回答

1
function is_process_running ($process_name) { 
    $result = array(); 
    exec("ps -Af | grep {$process_name}", $result); 

    // A loop that checks for your result and also checks 
    // that the result isn't the grep command called 

    // ps -ax | grep firefox asdfasd 
    // returns grep --color=auto firefox asdfasd 

    return false; 
} 

试试看吧。标志'f'修改输出,因此包括完整的呼叫。

+0

谢谢,我如何删除以下信息'PROCESS_OWNER 8426 1 0 Feb08? 09:43:42'从输出 – Maximus

+0

我只是尝试正则表达式与进程名称,然后。*,因为它在字符串的末尾。 – 2012-12-28 03:20:09

+0

工作完美:) – Maximus

-1

试试这个bash命令来获取有关进程的更多详细信息:

ps ax | grep YourProcesName 

我知道至少Java进程将应其Paramerers

+0

这不能是一个答案..这只是一个评论。 –

+0

praveen:定义答案 - 如果你期待某些事情,那么你可以简单地复制/粘贴你 - 相反,如果它是给你所有你需要进行的事情 - 我完全不同意 – rgasiore

+0

所以你的意思是你写的是一个答案??当你回答它时,它将被测试并且* ACTUAL ANSWER *。你可以在评论中提出这个问题,如果它有效,你会发布它作为答案。没有伤害。但**这**绝对不是一种在stackoverflow上回答问题的方法。 –

相关问题