PHP:获取命令的LINUX PID

Sky*_*man 1 php linux ubuntu

我在我的linux服务器(Ubuntu)中运行命令.例如:

screen -A -h 1500 -m -dmS test_command_one /home/SKY-users/SKY-001/./script
Run Code Online (Sandbox Code Playgroud)

这个后台进度的PID是否有任何方法,屏幕名称是:test_command_one

ps aux | grep test_command_one:

root      6573  8.1  2.4 271688 123804 pts/4   Ss+  Oct19   3:04 /home/SKY-users/SKY-001/./ ...
Run Code Online (Sandbox Code Playgroud)

我想回到这个PID: 6573

PHP :(简单)

<?php 
$output = shell_exec('sudo ps aux | grep test_command_one');
$array = explode("\n", $output);
echo '<pre>'.print_r($array, true).'</pre>';
?>
Run Code Online (Sandbox Code Playgroud)

感谢帮助!

rom*_*nsh 15

编辑:

通过与@WagnerVaz的代码结合

$mystring = "test_command_one";
exec("ps aux | grep 'screen .* $mystring' | grep -v grep | awk '{ print $2 }' | head -1", $out);
print "The PID is: " . $out[0];
Run Code Online (Sandbox Code Playgroud)

说明

  • ps aux - 显示所有用户和隐藏进程的进程
  • grep - 仅过滤包含"screen"的行,然后在同一行中过滤"test_command_one"
  • grep -v - 从输出中删除我们正在执行的同一行,因为它也将匹配
  • awk'{print $ 2}' - awk将输入拆分为列并使用多个空格作为分隔符.第2栏的打印内容
  • head -1 - 仅将输出限制为第一行.如果您运行多个屏幕,则仅返回第一个ID.