本文介绍了PHP:获取命令的 LINUX PID的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm running a command in my linux server (Ubuntu).For example:

screen -A -h 1500 -m -dmS test_command_one /home/SKY-users/SKY-001/./script

有什么办法可以得到这个后台进程的PID,屏幕名称是:test_command_one?

Is there any way to the PID of this background progress which screen name is: test_command_one?

ps 辅助 |grep 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/./ ...

我想取回这个 PID:6573

I'd like to get back this 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>';
?>

感谢您的帮助!

推荐答案

结合@WagnerVaz 的代码

By combining with code by @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];

说明

  • ps aux - 显示所有用户的进程和隐藏进程
  • grep - 仅过滤同一行中包含screen"和test_command_one"的行
  • grep -v - 从输出中删除我们正在执行的同一行,因为它也会被匹配
  • awk '{ print $2 }' - awk 将输入分成列并使用多个空格作为分隔符.第二列的打印内容
  • head -1 - 将输出限制为仅第一行.如果您有多个屏幕运行,则仅返回第一个 ID.
  • 这篇关于PHP:获取命令的 LINUX PID的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-23 05:31