Php Bash如何从PID获取完整的脚本名

Php Bash如何从PID获取完整的脚本名,php,bash,ps,Php,Bash,Ps,我有一个php函数,它从给定的PID检查脚本的名称,并将其与自身进行比较 function isRunning($pid) { $filename = exec('ps -p '.$pid.' -o "%c"'); $self = basename($_SERVER['SCRIPT_NAME']); return ($filename == $self) ? TRUE : FALSE; } 据我所知,我通常使用以下命令从PID获取脚本名称: ps -o PID -o "

我有一个php函数,它从给定的PID检查脚本的名称,并将其与自身进行比较

function isRunning($pid) {
    $filename = exec('ps -p '.$pid.' -o "%c"');
    $self = basename($_SERVER['SCRIPT_NAME']);
    return ($filename == $self) ? TRUE : FALSE;
}
据我所知,我通常使用以下命令从PID获取脚本名称:

ps -o PID -o "%c"
它返回文件名,但只返回前15个字符。 因为我的剧本的名字是

daily_system_check.php

函数总是返回FALSE,因为它将自己与

每日系统


Centos 6是否还有另一个bash命令将返回脚本的全名?

您没有指定什么是您的操作系统,但在Ubuntu Linux中,通过向ps调用添加
--context
,我可以看到脚本的全名:

# ps -p 17165 --context
  PID CONTEXT                  COMMAND
17165 unconfined               /bin/bash ./testing_long_script_name.sh
# 

您没有指定什么是您的操作系统,但在Ubuntu Linux中,我可以通过向ps调用添加
--context
看到脚本的全名:

# ps -p 17165 --context
  PID CONTEXT                  COMMAND
17165 unconfined               /bin/bash ./testing_long_script_name.sh
# 

阅读proc
cmdline
文件:

cat /proc/$pid/cmdline | awk 'BEGIN {FS="\0"} {print $2}'

阅读proc
cmdline
文件:

cat /proc/$pid/cmdline | awk 'BEGIN {FS="\0"} {print $2}'

“ps”命令中似乎没有任何标志或共谋来显示整个文件名,而不显示文件路径或将其截断。PHP完成了这项工作

function isRunning($pid) {
    $filename = basename(exec('ps -o cmd= '.$pid));
    $self = basename($_SERVER['SCRIPT_NAME']);
    return ($filename == $self) ? TRUE : FALSE;
}

“ps”命令中似乎没有任何标志或共谋来显示整个文件名,而不显示文件路径或将其截断。PHP完成了这项工作

function isRunning($pid) {
    $filename = basename(exec('ps -o cmd= '.$pid));
    $self = basename($_SERVER['SCRIPT_NAME']);
    return ($filename == $self) ? TRUE : FALSE;
}

--上下文返回文件名的整个路径。这可以通过使用php basename()函数获得文件名,但我想知道是否有一个更简单的bash命令。看起来您可能需要对其进行一些解析。您可以使用just
ps-ocmd-ppid
——context返回文件名的整个路径,从而将输出缩短为“command”。这可以通过使用php basename()函数获得文件名,但我想知道是否有一个更简单的bash命令。看起来您可能需要对其进行一些解析。通过使用ps-ocmd-ppid,您可以将输出缩短为“命令”,这很接近。它返回文件路径,而不仅仅是文件名。我可以使用PHPBaseName()函数来获取文件名,但不知道是否还有其他方法。很接近。它返回文件路径,而不仅仅是文件名。我可以使用php basename()函数来获取文件名,但不知道是否还有其他方法。