php exec('ps -aeo') не возвращает все процессы

Я пытаюсь создать простой php-скрипт, чтобы вернуть список запущенных процессов в формате JSON.

Этот скрипт, конечно же, выполняется apache.

Я во всем разобрался, кроме одной маленькой детали. Когда скрипт выполняется apache, команда возвращает только список запущенных процессов, принадлежащих пользователю 'apache'.

Есть ли что-нибудь вокруг этого?

exec('ps -aeo',$output);
//then some code to parse the $output and return a JSON string

ВЫХОД:

"processes": [
    {
      "cpu": "0.0",
      "pid": "23698",
      "user": "apache",
      "command": "/usr/sbin/httpd"
    },
    {
      "cpu": "0.0",
      "pid": "23486",
      "user": "apache",
      "command": "/usr/sbin/httpd"
    },
    {
      "cpu": "0.0",
      "pid": "23485",
      "user": "apache",
      "command": "/usr/sbin/httpd"
    },
    {
      "cpu": "0.0",
      "pid": "23484",
      "user": "apache",
      "command": "/usr/sbin/httpd"
    },
    {
      "cpu": "0.0",
      "pid": "23483",
      "user": "apache",
      "command": "/usr/sbin/httpd"
    },
    {
      "cpu": "0.0",
      "pid": "23482",
      "user": "apache",
      "command": "/usr/sbin/httpd"
    },
    {
      "cpu": "0.0",
      "pid": "23481",
      "user": "apache",
      "command": "/usr/sbin/httpd"
    },
    {
      "cpu": "0.0",
      "pid": "23480",
      "user": "apache",
      "command": "/usr/sbin/httpd"
    },
    {
      "cpu": "0.0",
      "pid": "23479",
      "user": "apache",
      "command": "/usr/sbin/httpd"
    },
    {
      "cpu": "0.0",
      "pid": "23478",
      "user": "apache",
      "command": "/usr/sbin/httpd"
    },
    {
      "cpu": "0.0",
      "pid": "1008",
      "user": "root",
      "command": "/usr/sbin/httpd"
    },
    {
      "cpu": "0.0",
      "pid": "959",
      "user": "root",
      "command": "/usr/sbin/abrtd"
    }
  ]

person Sean256    schedule 14.10.2014    source источник
comment
Попробуйте 'ps aux', чтобы снять ограничение только для этого пользователя.   -  person Chad    schedule 14.10.2014
comment
@cwscribner Опереди меня. Ага. Хотя в результате у вас могут возникнуть некоторые проблемы с форматированием, отстой, поскольку strikethrough.   -  person Ohgodwhy    schedule 14.10.2014
comment
Я недавно сделал что-то подобное. Возможно, мой код поможет вам ;) geneticcoder. blogspot.com/2014/10/   -  person I wrestled a bear once.    schedule 14.10.2014
comment
@cwscribner не повезло с «aux», он по-прежнему выводит только процессы, принадлежащие apache.   -  person Sean256    schedule 14.10.2014
comment
@Ohgodwhy, к сожалению, не сработало   -  person Sean256    schedule 14.10.2014
comment
Тогда в вашем Linux есть какая-то дополнительная функция ограничения разрешений, включенная для /proc, что-то вроде Grsecurity или чего-то подобного.   -  person Laszlo Valko    schedule 15.10.2014


Ответы (1)


у меня была такая же проблема, это решило ее. (при условии, что у вас есть root-права)

# chcon -t unconfined_exec_t /sbin/httpd

см. подробный документ здесь< /а>

вероятно, не очень хорошая идея, если сервер используется недоверчивыми пользователями.

person hc100    schedule 21.11.2014