2014-10-16 2 views
0

데이터베이스 처리를 수행하는 PHP bash 스크립트가 있습니다. 내가 알아야 할 것은이 스크립트의 호출자입니다. 나는 그것이 과정이나 다른 스크립트인지 모른다. 그래서 호출자의 프로세스 ID 또는 스크립트 이름을 알 수있는 방법이 있습니까?php bash 스크립트를 호출하는 프로세스 또는 스크립트를 찾는 방법


스크립트는 일부 프로세스에서 실행되며 해당 코드는 해석기 경로 "#!/usr/bin/php"로 시작합니다. 이 파일은 bash 스크립트로만 호출되었습니다.

OS : CentOS의 6.5

+1

http://php.net/manual/en/function.posix-getppid.php –

+0

@MarcB 감사합니다.하지만 "posix_getppid() 함수가 정의되지 않았습니다." – Ermon

+0

로그인하여이 스크립트를 실행하면 자신을'/ usr/local/bin/blah.php'와 함께 사용한다면 로그인 셸의 PID를 얻으실 수 있으십니까? 웹에서 실행되는 경우 httpd의 PID를 얻으려고합니까? – miken32

답변

0

당신은 추적하려는 파일 이름에 대해 확인합니다이

<?php 

Check for a current process by filename 

function processExists($file = false) { 

    $exists  = false; 
    $file  = $file ? $file : __FILE__; 

    // Check if file is in process list 
    exec("ps -C $file -o pid=", $pids); 
    if (count($pids) > 1) { 
     $exists = true; 
    } 
    return $exists; 
} 

?> 

이런 식으로 뭔가를 시도 할 수 있습니다. 프로세스 ID가 필요하면 exec에있는 내용을 조정하거나 $ pids를 리턴하십시오.

이 시도

---

$mystring = "script_running"; 
exec("ps aux | grep \"${mystring}\" | grep -v grep | awk '{ print $2 }' | head -1", $out); 
print "The PID is: " . $out[0]; 

추신 보조은 실행중인 것을 더 설명이다.

+0

이 코드의 일부를 사용했는데 pids가 전혀 없으며 빈 배열 만 제공합니다. – Ermon

+0

답변을 주셔서 감사 드리며 조사를 해 주셨고 저에게 도움이되었습니다. – Ermon

관련 문제