private function isPullDaemonRunning()
 {
     $control = new PhabricatorDaemonControl();
     $daemons = $control->loadRunningDaemons();
     foreach ($daemons as $daemon) {
         if ($daemon->isRunning() && $daemon->getName() == 'PhabricatorRepositoryPullLocalDaemon') {
             return true;
         }
     }
     return false;
 }
 case 'status':
     $err = $control->executeStatusCommand();
     exit($err);
 case 'stop':
     $pass_argv = array_slice($argv, 2);
     $err = $control->executeStopCommand($pass_argv);
     exit($err);
 case 'restart':
     $err = $control->executeStopCommand(array());
     if ($err) {
         exit($err);
     }
     /* Fall Through */
 /* Fall Through */
 case 'start':
     $running = $control->loadRunningDaemons();
     // "running" might not mean actually running so much as was running at
     // some point. ergo, do a quick grouping and only barf if daemons are
     // *actually* running.
     $running_dict = mgroup($running, 'isRunning');
     if (!empty($running_dict[true])) {
         echo phutil_console_wrap("phd start: Unable to start daemons because daemons are already " . "running.\n" . "You can view running daemons with 'phd status'.\n" . "You can stop running daemons with 'phd stop'.\n" . "You can use 'phd restart' to stop all daemons before starting new " . "daemons.\n");
         exit(1);
     }
     $daemons = array(array('PhabricatorRepositoryPullLocalDaemon', array()), array('PhabricatorGarbageCollectorDaemon', array()));
     $taskmasters = PhabricatorEnv::getEnvConfig('phd.start-taskmasters');
     for ($ii = 0; $ii < $taskmasters; $ii++) {
         $daemons[] = array('PhabricatorTaskmasterDaemon', array());
     }
     will_launch($control);
     foreach ($daemons as $spec) {