sacctmgr [<OPTION>] [<COMMAND>]
    Valid <OPTION> values are:
     -h or --help: equivalent to "help" command
     -i or --immediate: commit changes immediately
     --json[=data_parser]: Produce JSON output (where supported)
     -n or --noheader: no header will be added to the beginning of output
     -o or --oneliner: equivalent to "oneliner" command
     -p or --parsable: output will be '|' delimited with a '|' at the end
     -P or --parsable2: output will be '|' delimited without a '|' at the end
     -Q or --quiet: equivalent to "quiet" command
     --yaml[=data_parser]: Produce YAML output (where supported)
     -r or --readonly: equivalent to "readonly" command
     -s or --associations: equivalent to "associations" command
     -v or --verbose: equivalent to "verbose" command
     -V or --version: equivalent to "version" command

  <keyword> may be omitted from the execute line and sacctmgr will execute
  in interactive mode. It will process commands as entered until explicitly
  terminated.

  Valid <COMMAND> values are:
     add <ENTITY> <SPECS>     add entity
     archive <DUMP/LOAD> <SPECS>
                              Archive past jobs and/or steps, or load them
                              back into the database.
     associations             when using show/list will list the
                              associations associated with the entity.
     clear stats              clear server statistics
     delete <ENTITY> <SPECS>  delete the specified entity(s)
     dump <CLUSTER> [File=<FILENAME>]
                              dump database information of the
                              specified cluster to the flat file.
                              Will default to clustername.cfg if no file
                              is given.
     exit                     terminate sacctmgr
     help                     print this description of use.
     list <ENTITY> [<SPECS>]  display info of identified entity, default
                              is display all.
     load <FILE> [<SPECS>]    read in the file to update the database
                              with the file contents. <SPECS> here consist
                              of 'cluster=', and 'clean'.  The 'cluster='
                              will override the cluster name given in the
                              file.  The 'clean' option will remove what is
                              already in the system for this cluster and
                              replace it with the file. When 'clean' is used
			      with no options only the cluster along with it's
			      associations will be removed. No accounts, users,
			      or QOS will be removed. THe 'clean' option also
			      accepts a comma separated list of other options
			      to remove. Those include 'account' and 'user'. If
			      you would like to remove both accounts and users
			      along with the cluster and associations give the
			      input of `clean=account,user. If the 'clean'
			      option is not given only new additions or
                              modifications will be done, no deletions.
     modify <ENTITY> <SPECS>  modify entity
     oneliner                 report output one record per line.
     parsable                 output will be | delimited with an ending '|'
     parsable2                output will be | delimited without an ending '|'
     ping                     ping slurmdbd
     quiet                    print no messages other than error messages.
     quit                     terminate this command.
     readonly                 makes it so no modification can happen.
     reconfigure              reread the slurmdbd.conf on the DBD.
     shutdown                 shutdown the server.
     show                     same as list
     verbose                  enable detailed logging.
     version                  display tool version number.
     !!                       Repeat the last command entered.

  <ENTITY> may be "account", "association", "cluster",
                  "configuration", "coordinator", "event",
                  "federation", "job", "problem", "qos",
                  "resource", "reservation", "runawayjobs", "stats"
                  "transaction", "tres", "user" or "wckey"

  <SPECS> are different for each command entity pair.
       list account       - Clusters=, Descriptions=, Flags=, Format=,
                            Names=, Organizations=, Parents=, WithAssoc,
                            WithDeleted, WithCoordinators, WithRawQOS,
                            and WOPLimits
       add account        - Clusters=, DefaultQOS=, Description=, Fairshare=,
                            Flags=, GrpTRESMins=, GrpTRES=, GrpJobs=,
                            GrpSubmitJob=, GrpWall=, MaxTRESMins=, MaxTRES=,
                            MaxJobs=, MaxNodes=, MaxSubmitJobs=, MaxWall=,
                            Names=, Organization=, Parent=, Priority=
                            and QosLevel=
       modify account     - (set options) DefaultQOS=, Description=,
                            Fairshare=, Flags=, GrpTRESMins=, GrpTRESRunMins=,
                            GrpTRES=, GrpJobs=, GrpSubmitJob=, GrpWall=,
                            MaxTRESMins=, MaxTRES=, MaxJobs=, MaxNodes=,
                            MaxSubmitJobs=, MaxWall=, Names=, Organization=,
                            Parent=, and QosLevel=
                            RawUsage= (with admin privileges only)
                            (where options) Clusters=, DefaultQOS=,
                            Descriptions=, Names=, Organizations=,
                            Parent=, Priority= and QosLevel=
       delete account     - Clusters=, DefaultQOS=, Descriptions=, Flags=,
                            Names=, Organizations=, and Parents=

       list associations  - Accounts=, Clusters=, Flags=, Format=, ID=,
                            OnlyDefaults, Partitions=, Parent=, Tree, Users=,
                            WithSubAccounts, WithDeleted, WOLimits,
                            WOPInfo, and WOPLimits

       list cluster       - Classification=, DefaultQOS=, Federation=,
                            Flags=, Format=, Names=, RPC= WithFed and
                            WOLimits
       add cluster        - DefaultQOS=, Fairshare=, Federation=, FedState=,
                            GrpTRES=, GrpJobs=, GrpSubmitJob=, MaxTRESMins=,
                            MaxJobs=, MaxNodes=, MaxSubmitJobs=, MaxWall=,
                            Name=, QosLevel= and Weight=
       modify cluster     - (set options) DefaultQOS=, Fairshare=,
                            Federation=, FedState=, GrpTRES=, GrpJobs=,
                            GrpSubmitJob=, MaxTRESMins=, MaxJobs=, MaxNodes=,
                            MaxSubmitJobs=, MaxWall=, QosLevel= and Weight=
                            (where options) Classification=, Federation=,
                            Flags=, and Names=
       delete cluster     - Classification=, DefaultQOS=, Flags=, and Names=

       add coordinator    - Accounts=, and Names=
       delete coordinator - Accounts=, and Names=

       list events        - All_Clusters, All_Time, Clusters=, CondFlags=,
                            End=, Events=, Format=, MaxCPUs=, MinCPUs=,
                            Nodes=, Reason=, Start=, States=, and User=

       list federation    - Names=, Format= and Tree
       add federation     - Flags=, Clusters= and Name=
       modify federation  - (set options) Clusters= and Flags=
                            (where options) Names=
       delete federation  - Names=

       modify job         - (set options) DerivedExitCode=, Comment=,
                            NewWCKey=, TRES=
                            (where options) JobID=, Cluster=, EndTime=,
                            StartTime=, WCKey=, User=

       list qos           - Descriptions=, Format=, Id=, Names=,
                            PreemptMode=, and WithDeleted
       add qos            - Description=, Flags=, GraceTime=, GrpJobs=,
                            GrpSubmitJob=, GrpTRES=, GrpTRESMins=, GrpWall=,
                            MaxJobs=, MaxSubmitJobsPerUser=, MaxTRESMins=,
                            MaxTRESPerJob=, MaxTRESPerNode=, MaxTRESPerUser=,
                            MaxWall=, Names=, Preempt=, PreemptMode=,
                            Priority=, UsageFactor=, and UsageThreshold=
       modify qos         - (set options) Description=, Flags=, GraceTime=,
                            GrpJobs=, GrpSubmitJob=, GrpTRES=, GrpTRESMins=,
                            GrpWall=,
                            MaxJobs=, MaxSubmitJobsPerUser=, MaxTRESMins=,
                            MaxTRESPerJob=, MaxTRESPerNode=, MaxTRESPerUser=,
                            MaxWall=, Names=, Preempt=, PreemptMode=,
                            Priority=, RawUsage= (admin only),
                            UsageFactor=, and UsageThreshold=
                            (where options) Descriptions=, ID=, Names=
                            and PreemptMode=
       delete qos         - Descriptions=, ID=, Names=, and PreemptMode=

       list resource      - Allowed=, Clusters=, Descriptions=, Flags=, Format=,
                            Ids=, Names=, ServerType=, Servers=,
                            and WithClusters
       add resource       - Allowed=, Clusters=, Count=, Descriptions=, Flags=,
                            LastConsumed=, Names=, Server=, ServerType=, Type=
       modify resource    - (set options) Allowed=, Count=, Flags=,
                            LastConsumed=, Manager=,
                            (where options) Clusters=, Names=, Servers=,
       delete resource    - Clusters=, Names=

       list reservation   - Clusters=, End=, ID=, Names=, Nodes=, Start=

       list runawayjobs   - Cluster=, Format=

       clear stats
       list stats

       list transactions  - Accounts=, Action=, Actor=, Clusters=, End=,
                            Format=, ID=, Start=, User=, and WithAssoc

       list tres          - ID=, Name=, Type=, WithDeleted

       list user          - AdminLevel=, DefaultAccount=,
                            DefaultWCKey=, Format=, Names=,
                            QosLevel=, WithAssoc, WithCoordinators,
                            WithDeleted, WithRawQOS, and WOPLimits
       add user           - Accounts=, AdminLevel=, Clusters=, Comment=,
                            DefaultAccount=, DefaultQOS=, DefaultWCKey=,
                            Fairshare=, MaxTRESMins=, MaxTRES=,
                            MaxJobs=, MaxNodes=, MaxSubmitJobs=, MaxWall=,
                            Names=, Partitions=, Priority= and QosLevel=
       modify user        - (set options) AdminLevel=, DefaultAccount=,
                            Comment=, DefaultQOS=, DefaultWCKey=, Fairshare=,
                            MaxTRESMins=, MaxTRES=, MaxJobs=, MaxNodes=,
                            MaxSubmitJobs=, MaxWall=, NewName=,
                            and QosLevel=,
                            RawUsage= (with admin privileges only)
                            (where options) Accounts=, AdminLevel=,
                            Clusters=, DefaultAccount=, Names=,
                            Partitions=, Priority= and QosLevel=
       delete user        - Accounts=, AdminLevel=, Clusters=,
                            DefaultAccount=, DefaultWCKey=, and Names=

       list wckey         - Clusters=, End=, Format=, ID=, Names=,
                            Start=, User=, and WithDeleted

       archive dump       - Directory=, Events, Jobs,
                            PurgeEventAfter=, PurgeJobAfter=,
                            PurgeStepAfter=, PurgeSuspendAfter=,
                            Script=, Steps, and Suspend

       archive load       - File=, or Insert=

  Format options are different for listing each entity pair.

  One can get an number of characters by following the field option with
  a %NUMBER option.  i.e. format=name%30 will print 30 chars of field name.

       Account            - Account, Coordinators, Description, Flags,
                            Organization

       Association        - Account, Cluster, Comment, DefaultQOS, Fairshare,
                            Flags, GrpTRESMins, GrpTRESRunMins, GrpTRES,
                            GrpJobs, GrpSubmitJob, GrpWall, ID,
                            MaxTRESMins, MaxTRES, MaxJobs, MaxNodes,
                            MaxSubmitJobs, MaxWall,
                            QOS, ParentID, ParentName, Partition, User,
                            WithRawQOS

       Cluster            - Classification, Cluster, ClusterNodes,
                            ControlHost, ControlPort, DefaultQOS,
                            Fairshare, Flags, GrpTRESMins, GrpTRES GrpJobs,
                            GrpSubmitJob, MaxTRESMins, MaxTRES, MaxJobs,
                            MaxNodes, MaxSubmitJobs, MaxWall, NodeCount,
                            PluginIDSelect, RPC, TRES

       Event              - Cluster, ClusterNodes, Duration, End,
                            Event, EventRaw, NodeName, Reason, Start,
                            State, StateRaw, TRES, User

       QOS                - Description, Flags, GraceTime, GrpJobs,
                            GrpSubmitJob, GrpTRES, GrpTRESMins, GrpWall,
                            MaxJobs, MaxSubmitJobsPerUser, MaxTRESMins,
                            MaxTRESPerJob, MaxTRESPerNode, MaxTRESPerUser,
                            MaxWall, Name, Preempt, PreemptMode,
                            Priority, UsageFactor, UsageThreshold

       Resource           - Allowed, Cluster, Count, CountAllowed, CountUsed,
                            Description, Flags, LastConsumed, Manager, Name,
                            Server, Type, Used

       Reservation        - Assoc, Cluster, Comment, End, Flags, ID, Name,
                            NodeNames, Start, TRES, UnusedWall

       RunAwayJobs        - Cluster, ID, Name, Partition, State,
                            TimeStart, TimeEnd

       Transactions       - Action, Actor, Info, TimeStamp, Where

       TRES               - ID, Name, Type

       User               - AdminLevel, Coordinators, DefaultAccount,
                            DefaultWCKey, User

       WCKey              - Cluster, ID, Name, User

       Account/User WithAssoc option will also honor
       all of the options for Association.


  All commands entities, and options are case-insensitive.
