Здравствуйте!
Если выполнить в терминале команду:
nohup php -f /path/to/file.php > /dev/null 2>&1 & echo $!
То скрипт выполнится успешно, выведется его pid и он будет висеть в процессах, выполняя свою задачу.
Но если тоже самое выполнить в другом php скрипте через функцию exec, то скрипт /path/to/file.php также будет висеть в процессах, как-будто выполняет свою задачу, но это не так.
Короче говоря, оба варианта запуска идентичны, за исключением того момента, что после запуска команды из консоли php скрипт выполняет свой код, а во втором варианте запуска этого не происходит.
В чем может быть проблема?