我有一些php bash腳本來做一些數據庫處理。我只需要知道這個腳本的調用者。我不知道它是過程還是其他腳本。那麼有什麼方法可以知道調用者的進程ID或腳本名稱?如何找出調用php bash腳本的進程或腳本
腳本正在運行某個進程,其代碼以解釋器路徑「#!/ usr/bin/php」開頭。該文件僅作爲bash腳本調用。
OS:Centos的6.5
我有一些php bash腳本來做一些數據庫處理。我只需要知道這個腳本的調用者。我不知道它是過程還是其他腳本。那麼有什麼方法可以知道調用者的進程ID或腳本名稱?如何找出調用php bash腳本的進程或腳本
腳本正在運行某個進程,其代碼以解釋器路徑「#!/ usr/bin/php」開頭。該文件僅作爲bash腳本調用。
OS:Centos的6.5
你可以嘗試這樣的事情
<?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是更多的描述發生了什麼運行。
http://php.net/manual/en/function.posix-getppid.php – 2014-10-16 19:54:31
@MarcB謝謝,但我得到錯誤「posix_getppid()未定義函數」 – Ermon 2014-10-16 20:16:34
因此,如果您登錄並運行此腳本你用/ usr/local/bin/blah.php',你希望得到登錄shell的PID?如果它是從網上運行的,你希望得到httpd的PID? – miken32 2014-10-16 20:45:36