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

问题描述 投票:5回答:3

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

  • 进程ID
  • 用于执行处理的命令
  • 对过程的争论

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

exec('ps aux', $output);

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

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

php linux ubuntu process ps
3个回答
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
投票

大部分功劳归于meuh


ps ahxwwo pid,command

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

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

ps ahxwwo pid:1,command:1

现在将explode与空白用作定界符,可以保证索引0是pid,索引1是命令,其余索引是参数。


0
投票

尝试使用PHP库devium/processes

© www.soinside.com 2019 - 2024. All rights reserved.