def run(self, start_command_srv):
        """ Setup daemon process, start child forks, and sleep until
            events are signalled.

            `start_command_srv`
                Set to ``True`` if command server should be started.
            """

        if start_command_srv:
            # note, this must be established *before* the task runner is forked
            # so the task runner can communicate with the command server.

            # fork the command server
            self._command_server.start()

            # drop root privileges; command server will remain as the only
            # daemon process with root privileges. while root plugins have root
            # shell access, they are known and the commands are logged by the
            # command server.
            self._drop_privs()

        # fork the task runner
        self._task_runner.start()

        # setup signal handlers
        self._reg_sighandlers()

        while self.running:
            time.sleep(self._sleep_period)

        self.shutdown()
Setup daemon process, start child forks, and sleep until
            events are signalled.

            `start_command_srv`
                Set to ``True`` if command server should be started.