diff --git a/src/monitor/monitor.c b/src/monitor/monitor.c index a080870..5cd451c 100644 --- a/src/monitor/monitor.c +++ b/src/monitor/monitor.c @@ -1447,7 +1447,7 @@ static int monitor_cleanup(void) errno = 0; ret = unlink(SSSD_PIDFILE); - if (ret == -1) { + if (ret == -1 && errno != ENOENT) { ret = errno; DEBUG(SSSDBG_FATAL_FAILURE, "Error removing pidfile! (%d [%s])\n", ret, strerror(ret)); @@ -2620,12 +2620,14 @@ int main(int argc, const char *argv[]) } /* Check if the SSSD is already running */ - ret = check_file(SSSD_PIDFILE, 0, 0, S_IFREG|0600, 0, NULL, false); - if (ret == EOK) { - DEBUG(SSSDBG_FATAL_FAILURE, - "pidfile exists at %s\n", SSSD_PIDFILE); - ERROR("SSSD is already running\n"); - return 2; + if (!opt_interactive) { + ret = check_file(SSSD_PIDFILE, 0, 0, S_IFREG|0600, 0, NULL, false); + if (ret == EOK) { + DEBUG(SSSDBG_FATAL_FAILURE, + "pidfile exists at %s\n", SSSD_PIDFILE); + ERROR("SSSD is already running\n"); + return 2; + } } /* Parse config file, fail if cannot be done */