Я создал несколько служб PHP (CLI). Чтобы получить их PID из другого процесса в лучшем виде.
Однако я не могу найти это решение оптимальным ..
не grep
выход ps
, Вместо этого используйте pgrep
, Если у вас запущен только один PHP-процесс, вы можете найти процессы по его имени следующим образом:
pgrep php;
и он вернет что-то вроде 49282
,
Однако, поскольку вы заявили, что запущено несколько программ, вы можете различить их, используя pgrep --full
, Например, если вы запускаете 2 команды, php foo.php
а также php bar.php
и вы хотите PID запущенного процесса foo.php
:
pgrep --full '^php foo\.php$'
В то время как ^
а также $
может не быть необходимым во всех случаях, они предотвращают ложноположительные совпадения. Для получения дополнительной информации о регулярных выражениях см. этот grep
документация.
Если я не ошибаюсь, следующий код будет работать для вас.
ps aux | grep php
Лучший способ — запомнить PID после создания подпроцессов. Все варианты, анализирующие полный список процессов, могут привести к неправильным результатам.
Другое решение — найти / запомнить процесс, который запустил подпроцессы и выполнить поиск дочерних процессов.
Во всяком случае, вы дали нам меньше деталей, чтобы помочь более конкретным.