diff --git a/src/slurmctld/controller.c b/src/slurmctld/controller.c index 71ed4d1ec58cebb49b9feed76e39509527202500..1f2b19dcf5300941128b5e14bc1c5487f030c6e1 100644 --- a/src/slurmctld/controller.c +++ b/src/slurmctld/controller.c @@ -63,11 +63,11 @@ #include "src/slurmctld/locks.h" #include "src/slurmctld/slurmctld.h" -#define BUF_SIZE 1024 /* Temporary buffer size */ -#define DEFAULT_DAEMONIZE 0 /* Run as daemon by default if set */ -#define DEFAULT_RECOVER 0 /* Recover state by default if set */ +#define BUF_SIZE 1024 /* Temporary buffer size */ +#define DEFAULT_DAEMONIZE 1 /* Run as daemon by default if set */ +#define DEFAULT_RECOVER 1 /* Recover state by default if set */ #define MAX_SERVER_THREADS 20 /* Max threads to service RPCs */ -#define MEM_LEAK_TEST 0 /* Running memory leak test if set */ +#define MEM_LEAK_TEST 0 /* Running memory leak test if set */ #ifndef MAX # define MAX(x,y) (((x) >= (y)) ? (x) : (y)) @@ -159,7 +159,7 @@ int main(int argc, char *argv[]) /* * Establish initial configuration */ - log_init("slurmctld", log_opts, SYSLOG_FACILITY_DAEMON, NULL); + log_init(argv[0], log_opts, LOG_DAEMON, NULL); thread_id_main = pthread_self(); slurmctld_pid = getpid(); @@ -2020,90 +2020,82 @@ extern int optind, opterr, optopt; static void _parse_commandline(int argc, char *argv[], slurm_ctl_conf_t * conf_ptr) { - int c = 0, errlev; + int c = 0; char *log_file = NULL; opterr = 0; - while ((c = getopt(argc, argv, "dDe:f:hl:L:rs:")) != -1) + while ((c = getopt(argc, argv, "cdDf:hL:rv")) != -1) switch (c) { + case 'c': + recover = 0; + break; case 'd': daemonize = 1; - log_opts.stderr_level = LOG_LEVEL_QUIET; break; case 'D': daemonize = 0; break; - case 'e': - errlev = strtol(optarg, (char **) NULL, 10); - if ((errlev < LOG_LEVEL_QUIET) || - (errlev > LOG_LEVEL_DEBUG3)) { - error("invalid errlev argument"); - _usage(argv[0]); - exit(1); - } - log_opts.stderr_level = errlev; + case 'f': + slurmctld_conf.slurm_conf = xstrdup(optarg); break; case 'h': _usage(argv[0]); exit(0); break; - case 'f': - slurmctld_conf.slurm_conf = optarg; - break; - case 'l': - errlev = strtol(optarg, (char **) NULL, 10); - if ((errlev < LOG_LEVEL_QUIET) || - (errlev > LOG_LEVEL_DEBUG3)) { - error("invalid errlev argument"); - _usage(argv[0]); - exit(1); - } - log_opts.logfile_level = errlev; - break; case 'L': - log_file = optarg; + log_file = xstrdup(optarg); break; case 'r': recover = 1; break; - case 's': - errlev = strtol(optarg, (char **) NULL, 10); - if ((errlev < LOG_LEVEL_QUIET) || - (errlev > LOG_LEVEL_DEBUG3)) { - error("invalid errlev argument"); - _usage(argv[0]); - exit(1); - } - log_opts.syslog_level = errlev; + case 'v': + log_opts.stderr_level++; + log_opts.logfile_level++; + log_opts.syslog_level++; break; default: _usage(argv[0]); exit(1); } - log_alter(log_opts, SYSLOG_FACILITY_DAEMON, log_file); + if (daemonize) { + log_opts.stderr_level = LOG_LEVEL_QUIET; + if (log_file) + log_opts.syslog_level = LOG_LEVEL_QUIET; + } + + log_alter(log_opts, LOG_DAEMON, log_file); } /* _usage - print a message describing the command line arguments of * slurmctld */ static void _usage(char *prog_name) { - printf("%s [OPTIONS]\n", prog_name); - printf(" -d Become a daemon\n"); - printf - (" -D Debug mode, do not become a daemon, stay in the foreground\n"); - printf - (" -e <errlev> Set stderr logging to the specified level\n"); - printf(" -f <file> Use specified configuration file name\n"); - printf(" -h Print this help message\n"); - printf - (" -l <errlev> Set logfile logging to the specified level\n"); - printf(" -L <file> Set logfile to the supplied file name\n"); - printf - (" -s <errlev> Set syslog logging to the specified level\n"); - printf(" -r Recover state from last checkpoint\n"); - printf - ("<errlev> is an integer between 0 and 7 with higher numbers providing more detail\n"); + fprintf(stderr, "Usage: %s [OPTIONS]\n", prog_name); +#if (DEFAULT_RECOVER != 0) + fprintf(stderr, " -c " + "\tDo not recover state from last checkpoint.\n"); +#endif +#if (DEFAULT_DAEMONIZE == 0) + fprintf(stderr, " -d " + "\tRun daemon in background.\n"); +#endif +#if (DEFAULT_DAEMONIZE != 0) + fprintf(stderr, " -D " + "\tRun daemon in foreground.\n"); +#endif + fprintf(stderr, " -f file " + "\tUse `file' as slurmctld config file.\n"); + fprintf(stderr, " -h " + "\tPrint this help message.\n"); + fprintf(stderr, " -L logfile " + "\tLog messages to the file `logfile'\n"); +#if (DEFAULT_RECOVER == 0) + fprintf(stderr, " -r " + "\tRecover state from last checkpoint.\n"); +#endif + fprintf(stderr, " -v " + "\tVerbose mode. Multiple -v's increase verbosity.\n"); } /* _run_backup - this is the backup controller, it should run in standby