Php 解析grep输出

Php 解析grep输出,php,linux,shell,grep,Php,Linux,Shell,Grep,我正在尝试制作一个服务器管理器,以下是我目前所拥有的: <?php $COMMAND = shell_exec('ps ax --format command | grep skulltag'); $arr = explode("./",$COMMAND); $text = shell_exec('pgrep -u doom'); $arrtext = preg_split('/\s+/', $text); for( $i = 1; $i < count($arr); $i++ )

我正在尝试制作一个服务器管理器,以下是我目前所拥有的:

<?php
$COMMAND = shell_exec('ps ax --format command | grep skulltag');
$arr = explode("./",$COMMAND);
$text = shell_exec('pgrep -u doom');
$arrtext = preg_split('/\s+/', $text);
 for( $i = 1; $i < count($arr); $i++ ) {
    echo $i,". PROCESS ID ",$arrtext[$i]," Command issued: ",$arr[$i];
    echo '<br>';
 }
?>
以下是完整的输出,以供参考:

  • 已发出进程ID 4793命令:skulltag服务器
  • 已发出进程ID 4956命令:skulltag服务器-端口13000
  • 已发出进程ID 4958命令:skulltag服务器-端口13001 sh-c ps ax—格式化命令| grep skulltag grep skulltag

  • 什么是最简单和最有效的方法来摆脱这一行,我将如何做呢?谢谢。

    我快速而肮脏的解决方案是将
    |grep-v grep
    附加到命令。

    更改此选项:

    ps ax --format command | grep skulltag
    
    为此:

    ps ax --format command | grep [s]kulltag
    
    这样,grep命令本身包含字符串“[s]kultag”,而grep正则表达式“[s]kultag”不匹配该字符串

    还有两条建议:一,。无法保证您最初的ps | grep和后来的pgrep会一致。相反,请使用单个pgrep:

    pgrep -afl skulltag
    
    二,。for循环以1开始,这将跳过arr[0]中的进程

    您的php可以重写如下内容:

    $processes = explode("\n", shell_exec('pgrep -afl skulltag'));
    foreach($processes as $i => $process) {
        ($pid, $command) = explode(' ',$process,2);
        echo $i+1,". PROCESS ID ",$pid," Command issued: ",$command;
        echo '<br>';
    }
    
    $processs=explode(“\n”,shell_exec('pgrep-afl skulltag');
    foreach($i=>$process的进程){
    ($pid,$command)=分解(“”,$process,2);
    echo$i+1、“.PROCESS ID”、$pid、“发出的命令:”、$Command;
    回声“
    ”; }
    如果我理解您的要求,那么解决这个问题的标准方法是使用一种与自身不匹配的模式,例如,
    grep[s]kulltag
    “出于某种原因”-这可能是因为您正在运行的命令正在运行,因此它会显示在正在运行的进程列表中。如果您有
    pgrep
    ,为什么要重新实现它?修复正则表达式更优雅。
    $processes = explode("\n", shell_exec('pgrep -afl skulltag'));
    foreach($processes as $i => $process) {
        ($pid, $command) = explode(' ',$process,2);
        echo $i+1,". PROCESS ID ",$pid," Command issued: ",$command;
        echo '<br>';
    }