使用PHP列出服务器上所有正在运行的进程

时间:2015-09-12 06:35:34

标签: php linux ubuntu process ps

我正在尝试使用PHP获取当前在我的Ubuntu服务器上运行的所有进程的列表。理想情况下,我想获得以下信息:

  • 进程ID
  • 用于执行流程的命令
  • 给予过程的论据

我知道我可以使用exec来呼叫ps以列出当前正在运行的流程。

exec('ps aux', $output);

但是,输出的格式为任意数量的空格,因此解析它并不是世界上最容易的事情。

我可能会使用explodepreg_split进行解析,但是可以使用php更简单地获取所有正在运行的进程的列表,以及进程ID ,命令和参数?

2 个答案:

答案 0 :(得分:1)

我没有看到比ps更简单的东西,例如:ahxwwo pid,command只提供你想要的信息,例如:

5911 tail -F /var/log/mail.log

如果您想要原始数据,可以阅读/proc/[123456789]*/cmdline中的每个文件。例如,

$ cat -vet /proc/5911/cmdline
tail^@-F^@/var/log/mail.log^@

其中命令参数由空字符分隔。

答案 1 :(得分:1)

大部分功劳归于meuh

ps ahxwwo pid,command

给了我需要的三个项目,但由于任意空格格式化,仍然很难解析。

但是,可以删除空格格式。

ps ahxwwo pid:1,command:1

使用带有空格的explode作为分隔符现在可以保证索引0是pid,索引1是命令,其余索引是参数。