2014-10-16 132 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 – 2014-10-16 19:54:31

+0

@MarcB謝謝,但我得到錯誤「posix_getppid()未定義函數」 – Ermon 2014-10-16 20:16:34

+0

因此,如果您登錄並運行此腳本你用/ usr/local/bin/blah.php',你希望得到登錄shell的PID?如果它是從網上運行的,你希望得到httpd的PID? – miken32 2014-10-16 20:45:36

回答

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]; 

的ps aux是更多的描述發生了什麼運行。

+0

我已經使用了這段代碼的一部分,它根本沒有給出任何pid,只有空數組。 – Ermon 2014-10-16 20:29:25

+0

感謝您的回答,我做了一些調查,它對我有用。 – Ermon 2014-12-26 10:36:24