我正在尝试使用PHP
获取当前在我的Ubuntu服务器上运行的所有进程的列表。理想情况下,我想获得以下信息:
我知道我可以使用exec
来呼叫ps
以列出当前正在运行的流程。
exec('ps aux', $output);
但是,输出的格式为任意数量的空格,因此解析它并不是世界上最容易的事情。
我可能会使用explode
或preg_split
进行解析,但是可以使用php
更简单地获取所有正在运行的进程的列表,以及进程ID ,命令和参数?
答案 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是命令,其余索引是参数。