使用 PHP 列出服务器上的所有 运行 进程
Listing all running processes on server using PHP
我正在尝试使用 PHP
在我的 Ubuntu 服务器上获取当前 运行 所有进程的列表。理想情况下,我想获得以下信息:
- 进程 ID
- 用于执行进程的命令
- 给流程的参数
我知道我可以使用 exec
调用 ps
来列出当前 运行 个进程。
exec('ps aux', $output);
但是,输出是用任意数量的空格格式化的,所以解析它并不是世界上最简单的事情。
我可能会使用 explode
或 preg_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 是命令,其余索引是参数。
我正在尝试使用 PHP
在我的 Ubuntu 服务器上获取当前 运行 所有进程的列表。理想情况下,我想获得以下信息:
- 进程 ID
- 用于执行进程的命令
- 给流程的参数
我知道我可以使用 exec
调用 ps
来列出当前 运行 个进程。
exec('ps aux', $output);
但是,输出是用任意数量的空格格式化的,所以解析它并不是世界上最简单的事情。
我可能会使用 explode
或 preg_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 是命令,其余索引是参数。