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

Listing all running processes on server using PHP

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

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

exec('ps aux', $output);

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

我可能会使用 explodepreg_split 来解析,但是 是否有更简单的方法来使用 [=18 获取所有 运行 进程的列表=],以及进程 ID、命令和参数?

我看不出有什么比 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^@

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

大部分归功于 meuh


ps ahxwwo pid,command

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

但是,可以删除 space 格式。

ps ahxwwo pid:1,command:1

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