Вдохновленный ответом Джастина Левена и улучшил его, поскольку ps -C
не работает в Mac, что мне нужно в моем случае. Таким образом, вы можете использовать это в php-скрипте (возможно, непосредственно перед тем, как вам нужен демон), протестированном в Mac OS X 10.11.4 и Ubuntu 14.04:
$daemonPath = "FULL_PATH_TO_DAEMON";
$runningPhpProcessesOfDaemon = (int) shell_exec("ps aux | grep -c '[p]hp ".$daemonPath."'");
if ($runningPhpProcessesOfDaemon === 0) {
shell_exec('php ' . $daemonPath . ' > /dev/null 2>&1 &');
}
Маленькая, но полезная деталь: почему grep -c '[p]hp ...'
вместо grep -c 'php ...'
?
Потому что при подсчете процессов grep -c 'php ...'
будет считаться процессом, который вписывается в наш шаблон. Таким образом, использование регулярного выражения для первой буквы php отличает нашу команду от шаблона, который мы ищем.