使用PHP列出所有正在运行的进程

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

  • 进程ID
  • 用于执行进程的命令
  • 对过程的论证

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

 exec('ps aux', $output); 

但是,输出格式化为任意数量的空格,因此parsing它并不是世界上最简单的事情。

我可能会使用explodepreg_split来parsing,但有没有更容易的方法来获得所有正在运行的进程清单,使用php ,以及进程ID,命令和参数?

我没有看到任何比ps更正确的参数,例如: ahxwwo pid,command只给出你想要的信息的ahxwwo pid,command ,例如:

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

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

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

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

大部分的功劳都归于meuh 。


 ps ahxwwo pid,command 

给我提供了我需要的三个项目,但是由于任意的空间格式化,解析还是相当困难的。

但是,可以删除空格式。

 ps ahxwwo pid:1,command:1 

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