Я пытаюсь получить список всех процессов, запущенных в настоящее время на моем сервере Ubuntu, используя PHP
, В идеале я хотел бы получить следующую информацию:
Я знаю, что я могу использовать exec
звонить ps
перечислить текущие запущенные процессы.
exec('ps aux', $output);
Однако выходные данные отформатированы с произвольным количеством пробелов, поэтому их разбор не самая простая вещь в мире.
Я мог бы потенциально использовать explode
или же preg_split
разобрать, но Есть ли более простой способ получить список всех запущенных процессов, используя php
вместе с идентификатором процесса, командой и аргументами?
Я не вижу ничего проще, чем 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
Дает мне три элемента, которые мне нужны, но все еще довольно сложно разобрать из-за произвольного форматирования пространства.
Тем не менее, можно удалить форматирование пространства.
ps ahxwwo pid:1,command:1
С помощью explode
с пробелом в качестве разделителя теперь гарантирует, что индекс 0 — это pid, а индекс 1 — это команда, а остальные индексы являются аргументами.