.TH sacct "1" "Slurm Commands" "June 2025" "Slurm Commands"

.SH "NAME"
sacct \- displays accounting data for all jobs and job steps in the
Slurm job accounting log or Slurm database

.SH "SYNOPSIS"
\fBsacct\fR [\fIOPTIONS\fR...]

.SH "DESCRIPTION"
.PP
Accounting information for jobs invoked with Slurm are either logged
in the job accounting log file or saved to the Slurm database, as
configured with the AccountingStorageType parameter.
.PP
The \f3sacct\fP command displays job accounting data stored in the job
accounting log file or Slurm database in a variety of forms for your
analysis. The \f3sacct\fP command displays information on jobs, job
steps, status, and exitcodes by default. You can tailor the output
with the use of the \f3\-\-format=\fP option to specify the fields to
be shown.
.PP
Job records consist of a primary entry for the job as a whole as well as
entries for job steps. The Job Launch page has a more detailed description
of each type of job step.
<https://slurm.schedmd.com/job_launch.html#job_record>
.PP
For the root user, the \f3sacct\fP command displays job accounting
data for all users, although there are options to filter the output to
report only the jobs from a specified user or group.
.PP
For the non\-root user, the \f3sacct\fP command limits the display of
job accounting data to jobs that were launched with their own user
identifier (UID) by default. Data for other users can be displayed
with the \f3\-\-allusers\fP, \f3\-\-user\fP, or \f3\-\-uid\fP options.
.PP
Elapsed time fields are presented as
[days\-]hours:minutes:seconds[.microseconds]. Only 'CPU' fields will
ever have microseconds.

\fBNOTE\fR: If designated, the slurmdbd.conf option PrivateData may further
restrict the accounting data visible to users which are not
SlurmUser, root, or a user with AdminLevel=Admin. See the
slurmdbd.conf man page for additional details on restricting
access to accounting data.

\fBNOTE\fR: The contents of Slurm's database are maintained in lower case.
This may result in some \f3sacct\fP output differing from that of other Slurm
commands.

\fBNOTE\fR: Much of the data reported by \f3sacct\fP has been generated by
the \f2wait3()\fP and \f2getrusage()\fP system calls. Some systems
gather and report incomplete information for these calls;
\f3sacct\fP reports values of 0 for this missing data. See your systems
\f2getrusage (3)\fP man page for information about which data are
actually available on your system.

.SH "OPTIONS"

.TP "10"
\fB\-A\fR, \fB\-\-accounts\fR=<\fIaccount_list\fR>
Displays jobs when a comma separated list of accounts are given as the
argument.
.IP

.TP
\fB\-\-array\fR
Expand job arrays. Display all array tasks on separate lines instead of
displaying groups of array tasks on single lines.
.IP

.TP
\fB\-L\fR, \fB\-\-allclusters\fR
Display jobs ran on all clusters. By default, only jobs ran on the
cluster from where \fBsacct\fR is called are displayed.
.IP

.TP
\fB\-X\fR, \fB\-\-allocations\fR
Only show statistics relevant to the job allocation itself, not taking steps
into consideration.

\fBNOTE\fR: Without including steps, utilization statistics for job
allocation(s) will be reported as zero.
.IP

.TP
\fB\-a\fR, \fB\-\-allusers\fR
Displays all users' jobs when run by user root or if \fBPrivateData\fP is not
configured to \fBjobs\fP.
Otherwise display the current user's jobs
.IP

.TP
\fB\-x\fR, \fB\-\-associations\fR=<\fIassoc_list\fR>
Displays the statistics only for the jobs running under the
association ids specified by the \fBassoc_list\fR operand, which is a
comma\-separated list of association ids. Space characters are not
allowed in the \fBassoc_list\fR. Default is all associations\&.
.IP

.TP
\fB\-B\fR, \fB\-\-batch\-script\fR
This option will print the batch script of job if the job used one. If the job
didn't have a script 'NONE' is output.
.br
\fBNOTE\fR: AccountingStoreFlags=job_script is required for this.
.br
\fBNOTE\fR: Requesting specific job(s) with '\-j' is required for this.
.IP

.TP
\fB\-b\fR, \fB\-\-brief\fR
Displays a brief listing consisting of JobID, State, and ExitCode.
.IP

.TP
\fB\-M\fR, \fB\-\-clusters\fR=<\fIcluster_list\fR>
Displays the statistics only for the jobs started on the clusters
specified by the \fIcluster_list\fR operand, which is a
comma\-separated list of clusters. Space characters are not allowed
in the \fIcluster_list\fR.
A value of '\fIall\fR' will query to run on all clusters.
The default is current cluster you are executing the \fBsacct\fR command on or
all clusters in the federation when executed on a federated cluster.
This option implicitly sets the \fB\-\-local\fR option.
.IP

.TP
\fB\-c\fR, \fB\-\-completion\fR
Use job completion data instead of job accounting. The \fBJobCompType\fR
parameter in the slurm.conf file must be defined to a non\-none option.
Does not support federated cluster information (local data only).
.IP

.TP
\fB\-C\fR, \fB\-\-constraints\fR=<\fIconstraint_list\fR>
Comma separated list to filter jobs based on what constraints/features the job
requested. Multiple options will be treated as 'and' not 'or', so the job would
need all constraints specified to be returned not one or the other.
.IP

.TP
\fB\-\-delimiter\fR=<\fIcharacters\fR>
ASCII characters used to separate the fields when specifying
the \fB\-p\fR or \fB\-P\fR options. The default delimiter
is a '|'. This option is ignored if \fB\-p\fR or \fB\-P\fR options
are not specified.
.IP

.TP
\fB\-D\fR, \fB\-\-duplicates\fR
If Slurm job ids are reset, some job numbers will probably appear more
than once in the accounting log file but refer to different jobs.
Such jobs can be distinguished by the "submit" time stamp in the data
records.
.IP

When data for specific jobs are requested with the \-\-jobs option,
\fBsacct\fR returns the most recent job with that number. This
behavior can be overridden by specifying \-\-duplicates, in which case
all records that match the selection criteria will be returned.
.IP

\fBNOTE\fR: Revoked federated sibling jobs are hidden unless the
\fB\-\-duplicates\fR option is specified.
.IP

.TP
\fB\-E\fR, \fB\-\-endtime\fR=<\fIend_time\fR>
Select jobs in any state before the specified time. If states are
given with the \-s option return jobs in this state before this period.
See the \fBDEFAULT TIME WINDOW\fR section (below) for details about how the
default values for \-\-starttime and \-\-endtime are determined.

Valid time formats are:
.br
HH:MM[:SS][AM|PM]
.br
MMDD[YY][\-HH:MM[:SS]]
.br
MM.DD[.YY][\-HH:MM[:SS]]
.br
MM/DD[/YY][\-HH:MM[:SS]]
.br
YYYY\-MM\-DD[THH:MM[:SS]]
.br
today, midnight, noon, elevenses (11 AM), fika (3 PM), teatime (4 PM)
.br
now[{+|\-}\fIcount\fR[seconds(default)|minutes|hours|days|weeks]]
.IP

.TP
\fB\-\-env\-vars\fR
This option will print the running environment of a batch job, otherwise 'NONE'
is output.
.br
\fBNOTE\fR: AccountingStoreFlags=job_env is required for this.
.br
\fBNOTE\fR: Requesting specific job(s) with '\-j' is required for this.
.IP

.TP
\fB\-\-expand\-patterns\fR
Expand any filename patterns from in \f3StdOut\fP, \f3StdErr\fP and \f3StdIn\fP.
Fields that map to a range of values will use the first value of the range. For
example "%t" for task id will be replaced by "0".
.IP

.TP
\fB\-\-federation\fR
Show jobs from the federation if a member of one.
.IP

.TP
\fB\-f\fR, \fB\-\-file\fR=<\fIfile\fR>
Causes the \f3sacct\fP command to read job accounting data from the
named \f2file\fP instead of the current Slurm job accounting log
file. Only applicable when running the jobcomp/filetxt plugin. Setting this flag
implicitly enables the \-c flag.
.IP

.TP
\fB\-F\fR, \fB\-\-flags\fR=<\fIflag_list\fR>
Comma separated list to filter jobs based on what various ways the jobs were
handled. Current flags are SchedSubmit, SchedMain, SchedBackfill and
StartReceived. SchedSubmit, SchedMain, SchedBackfill describe the scheduler
that started the job.
.IP

.TP
\fB\-o\fR, \fB\-\-format\fR
Comma separated list of fields. (use "\-\-helpformat" for a list of
available fields).

\fBNOTE\fR: When using the format option for listing various fields you can put
a %NUMBER afterwards to specify how many characters should be printed.

e.g. format=name%30 will print 30 characters of field name right
justified. A %\-30 will print 30 characters left justified.

When set, the SACCT_FORMAT environment variable will override the
default format. For example:

SACCT_FORMAT="jobid,user,account,cluster"
.IP

.TP
\fB\-g\fR, \fB\-\-gid\fR=, \fB\-\-group\fR=<\fIgid_or_group_list\fR>
Displays the statistics only for the jobs started with the GID
or the GROUP specified by the \fIgid_list\fR or the \fIgroup_list\fR operand,
which is a comma\-separated list. Space characters are not allowed.
Default is no restrictions.
.IP

.TP
\fB\-h\fR, \fB\-\-help\fR
Displays a general help message.
.IP

.TP
\fB\-e\fR, \fB\-\-helpformat\fR
Print a list of fields that can be specified with the \fB\-\-format\fR option.
.IP

.RS
.PP
.nf
.ft 3
Fields available:

Account             AdminComment        AllocCPUS           AllocNodes
AllocTRES           AssocID             AveCPU              AveCPUFreq
AveDiskRead         AveDiskWrite        AvePages            AveRSS
AveVMSize           BlockID             Cluster             Comment
Constraints         ConsumedEnergy      ConsumedEnergyRaw   Container
CPUTime             CPUTimeRAW          DBIndex             DerivedExitCode
Elapsed             ElapsedRaw          Eligible            End
ExitCode            Extra               FailedNode          Flags
GID                 Group               JobID               JobIDRaw
JobName             Layout              Licenses            MaxDiskRead
MaxDiskReadNode     MaxDiskReadTask     MaxDiskWrite        MaxDiskWriteNode
MaxDiskWriteTask    MaxPages            MaxPagesNode        MaxPagesTask
MaxRSS              MaxRSSNode          MaxRSSTask          MaxVMSize
MaxVMSizeNode       MaxVMSizeTask       McsLabel            MinCPU
MinCPUNode          MinCPUTask          NCPUS               NNodes
NodeList            NTasks              Partition           Planned
PlannedCPU          PlannedCPURAW       Priority            QOS
QOSRAW              QOSREQ              Reason              ReqCPUFreq
ReqCPUFreqGov       ReqCPUFreqMax       ReqCPUFreqMin       ReqCPUS
ReqMem              ReqNodes            ReqTRES             ReqReservation
Reservation         ReservationId       Restarts            SegmentSize
SLUID               Start               State               StdErr
StdIn               StdOut              Submit              SubmitLine
Suspended           SystemComment       SystemCPU           Timelimit
TimelimitRaw        TotalCPU            TRESUsageInAve      TRESUsageInMax
TRESUsageInMaxNode  TRESUsageInMaxTask  TRESUsageInMin      TRESUsageInMinNode
TRESUsageInMinTask  TRESUsageInTot      TRESUsageOutAve     TRESUsageOutMax
TRESUsageOutMaxNode TRESUsageOutMaxTask TRESUsageOutMin     TRESUsageOutMinNode
TRESUsageOutMinTask TRESUsageOutTot     UID                 User
UserCPU             WCKey               WCKeyID             WorkDir
.ft 1
.fi
.RE

\fBNOTE\fR: When using with Ave[RSS|VM]Size or their values in
TRESUsageIn[Ave|Tot]. They represent the average/total of the highest
watermarks over all ranks in the step. When using sstat they represent the
average/total at the moment the command was run.

\fBNOTE\fR: TRESUsage*Min* values represent the lowest highwater mark in the
step.

\fBNOTE\fR: Availability of metrics rely on the \fBjobacct_gather\fP plugin
used. For example the jobacct_gather/cgroup in combination with cgroup/v2 does
not provide Virtual Memory metrics due to limitations in the kernel cgroups
interfaces and will show a 0 for the related fields.

The section titled "Job Accounting Fields" describes these fields.
.IP

.TP
\fB\-j\fR, \fB\-\-jobs\fR=<\fIjob\fR[.\fIstep\fR]>
Displays information about the specified \fIjob\fR[.\fIstep\fR] or list of
\fIjob\fR[.\fIstep\fR]s.

The \fIjob\fR[.\fIstep\fR]
parameter is a comma\-separated list of jobs.
Space characters are not permitted in this list.
.br
\fBNOTE\fR: A step id of 'batch' will display the information about the
batch step.
.br
By default sacct shows only jobs with Eligible time, but with this
option the non\-eligible will be also shown.
.br
\fBNOTE\fR: If \-\-state is also specified, as non\-eligible are not PD,
then non\-eligible jobs will not be displayed.
See the \fBDEFAULT TIME WINDOW\fR section (below) for details about how this
option changes the default values for \-\-starttime and \-\-endtime.
.IP

.TP
\f3\-\-json\fP, \f3\-\-json\fP=\fIlist\fR, \f3\-\-json\fP=<\fIdata_parser\fR>
Dump job information as JSON using the default data_parser plugin or explicit
data_parser with parameters. Sorting and formatting arguments will be ignored.
.IP

.TP
\fB\-\-local\fR
Show only jobs local to this cluster. Ignore other clusters in this federation
(if any). Overrides \-\-federation.
.IP

.TP
\fB\-l\fR, \fB\-\-long\fR
Equivalent to specifying:

.na
\-\-format=jobid,jobidraw,jobname,partition,maxvmsize,maxvmsizenode,
maxvmsizetask,avevmsize,maxrss,maxrssnode,maxrsstask,averss,maxpages,
maxpagesnode,maxpagestask,avepages,mincpu,mincpunode,mincputask,avecpu,ntasks,
alloccpus,elapsed,state,exitcode,avecpufreq,reqcpufreqmin,reqcpufreqmax,
reqcpufreqgov,reqmem,consumedenergy,maxdiskread,maxdiskreadnode,maxdiskreadtask,
avediskread,maxdiskwrite,maxdiskwritenode,maxdiskwritetask,avediskwrite,
reqtres,alloctres,tresusageinave,tresusageinmax,
tresusageinmaxn,tresusageinmaxt,tresusageinmin,tresusageinminn,tresusageinmint,
tresusageintot,tresusageoutmax,tresusageoutmaxn,
tresusageoutmaxt,tresusageoutave,tresusageouttot
.ad
.IP

.TP
\fB\-\-name\fR=<\fIjobname_list\fR>
Display jobs that have any of these name(s).
.IP

.TP
\fB\-i\fR, \fB\-\-nnodes\fR=<\fImin\fR[-\fImax\fR]>
Return jobs that ran on the specified number of nodes.
.IP

.TP
\fB\-I\fR, \fB\-\-ncpus\fR=<\fImin\fR[-\fImax\fR]>
Return jobs that ran on the specified number of cpus.
.IP

.TP
\fB\-\-noconvert\fR
Don't convert units from their original type (e.g. 2048M won't be converted to
2G).
.IP

.TP
\fB\-N\fR, \fB\-\-nodelist\fR=<\fInode_list\fR>
Display jobs that ran on any of these node(s). \fInode_list\fR can be
a ranged string.

\fBNOTE\fR: This is not reliable when nodes are added or removed to Slurm
while jobs are running. Only jobs that started in the specified time range
(\-S, \-E) will be returned.
.IP

.TP
\fB\-n\fR, \fB\-\-noheader\fR
No heading will be added to the output. The default action is to
display a header.
.IP

.TP
\fB\-p\fR, \fB\-\-parsable\fR
Output will be '|' delimited with a '|' at the end. See also the
\fB\-\-delimiter\fR option.
.IP

.TP
\fB\-P\fR, \fB\-\-parsable2\fR
Output will be '|' delimited without a '|' at the end. See also the
\fB\-\-delimiter\fR option.
.IP

.TP
\fB\-r\fR, \fB\-\-partition\fR
Comma separated list of partitions to select jobs and job steps
from. The default is all partitions.
.IP

.TP
\fB\-q\fR, \fB\-\-qos\fR
Only send data about jobs using these qos. Default is all.
.IP

.TP
\fB\-R\fR, \fB\-\-reason\fR=<\fIreason_list\fR>
Comma separated list to filter jobs based on what reason the job wasn't
scheduled outside resources/priority.
.IP

.TP
\fB\-S\fR, \fB\-\-starttime\fR
Select jobs in any state after the specified time. Default is 00:00:00
of the
current day, unless the '\-s' or '\-j' options are used. If the '\-s' option is
used, then the default is 'now'. If states are given with the '\-s' option then
only jobs in this state at this time will be returned. If the '\-j' option is
used, then the default time is Unix Epoch 0. See the \fBDEFAULT TIME WINDOW\fR
section (below) for details about how default values for \-\-starttime and
\-\-endtime are determined.

Valid time formats are:
.br
HH:MM[:SS][AM|PM]
.br
MMDD[YY][\-HH:MM[:SS]]
.br
MM.DD[.YY][\-HH:MM[:SS]]
.br
MM/DD[/YY][\-HH:MM[:SS]]
.br
YYYY\-MM\-DD[THH:MM[:SS]]
.br
today, midnight, noon, elevenses (11 AM), fika (3 PM), teatime (4 PM)
.br
now[{+|\-}\fIcount\fR[seconds(default)|minutes|hours|days|weeks]]
.IP

.TP
\fB\-s\fR, \fB\-\-state\fR=<\fIstate_list\fR>
Selects jobs based on their state during the time period given.
Unless otherwise specified, the start and end time will be the
current time when the \fB\-\-state\fR option is specified and
only currently running jobs can be displayed.
A start and/or end time must be specified to view information about
jobs not currently running.
See the \fBJOB STATE CODES\fR section below for a list of state designators.
Multiple state names may be specified using comma separators. Either the short
or long form of the state name may be used (e.g. \fBCA\fR or \fBCANCELLED\fR)
and the name is case insensitive (i.e. \fRca\fR and \fBCA\fR both work).

\fBNOTE\fR: Note for a job to be selected in the PENDING state it must have
"EligibleTime" in the requested time interval or different from "Unknown". The
"EligibleTime" is displayed by the "scontrol show job" command. For example
jobs submitted with the "\-\-hold" option will have "EligibleTime=Unknown" as
they are pending indefinitely.

\fBNOTE\fR: When specifying states and no start time is given the default
start time is 'now'. This is only when \-j is not used. If \-j is used the
start time will default to 'Epoch'. In both cases if no end time is given it
will default to 'now'. See the \fBDEFAULT TIME WINDOW\fR section (below) for
details about how this option changes the default values for \-\-starttime
and \-\-endtime.
.IP

.TP
\fB\-K\fR, \fB\-\-timelimit\-max\fR
Ignored by itself, but if timelimit_min is set this will be the
maximum timelimit of the range. Default is no restriction.
.IP

.TP
\fB\-k\fR, \fB\-\-timelimit\-min\fR
Only send data about jobs with this timelimit. If used with
timelimit_max this will be the minimum timelimit of the range.
Default is no restriction.
.IP

.TP
\fB\-T\fR, \fB\-\-truncate\fR
Truncate time. So if a job started before \-\-starttime the start time
would be truncated to \-\-starttime. The same for end time and \-\-endtime.
.IP

.TP
\fB\-u\fB, \fB\-\-uid\fR=, \fB\-\-user\fR=<\fIuid_or_user_list\fR>
Use this comma separated list of UIDs or user names to select jobs to
display. By default, the running user's UID is used.
.IP

.TP
\fB\-\-units\fR=[\fBKMGTP\fR]
Display values in specified unit type. Takes precedence over \fB\-\-noconvert\fR
option.
.IP

.TP
\fB\-\-usage\fR
Display a command usage summary.
.IP

.TP
\fB\-\-use\-local\-uid\fR
When displaying UID, sacct uses the UID stored in Slurm's accounting database
by default. Use this command to make Slurm use a system call to get the UID
from the username. This option may be useful in an environment with multiple
clusters and one database where the UIDs aren't the same on all clusters.
.IP

.TP
\fB\-v\fR, \fB\-\-verbose\fR
Primarily for debugging purposes, report the state of various
variables during processing.
.IP

.TP
\fB\-V\fB, \fB\-\-version\fR
Print version.
.IP

.TP
\fB\-W\fR, \fB\-\-wckeys\fR=<\fIwckey_list\fR>
Displays the statistics only for the jobs started on the wckeys
specified by the \f2wckey_list\fP operand, which is a comma\-separated
list of wckey names. Space characters are not allowed in the
\f2wckey_list\fP. Default is all wckeys\&.
.IP

.TP
\fB\-\-whole\-hetjob\fR[=yes|no]
When querying and filtering heterogeneous jobs with \fB\-\-jobs\fR, Slurm will
default to retrieving information about all the components of the job if the
het_job_id (leader id) is selected. If a non\-leader heterogeneous job component
id is selected then only that component is retrieved by default. This behavior
can be changed by using this option. If set to 'yes' (or no argument), then
information about all the components will be retrieved no matter which component
is selected in the job filter. If set to 'no' then only the selected
heterogeneous job component(s) will be retrieved, even when selecting the
leader.
.IP

.TP
\f3\-\-yaml\fP, \f3\-\-yaml\fP=\fIlist\fR, \f3\-\-yaml\fP=<\fIdata_parser\fR>
Dump job information as YAML using the default data_parser plugin or explicit
data_parser with parameters. Sorting and formatting arguments will be ignored.
.IP

.SS "Job Accounting Fields"
Descriptions of each field option can be found below.
Note that the Ave*, Max* and Min* accounting fields look at the values for
all the tasks of each step in a job and return the average, maximum or minimum
values of the task for that job step. For example, for MaxRSS, the returned
value is the maximum memory consumption seen by one of the tasks of the step,
and MaxRSSTask shows which task it is.
.RS
.TP "10"
\f3ALL\fP
Print all fields listed below.
.IP

.TP
\f3Account\fP
Account the job ran under.
.IP

.TP
\fBAdminComment\fR
A comment string on a job that must be set by an administrator, the SlurmUser
or root.
.IP

.TP
\f3AllocCPUs\fP
Count of allocated CPUs. Equivalent to \f3NCPUS\fP.
.IP

.TP
\f3AllocNodes\fP
Number of nodes allocated to the job/step.  0 if the job is pending.
.IP

.TP
\f3AllocTres\fP
Trackable resources. These are the resources allocated to the job/step
after the job started running. For pending jobs this should be blank.
For more details see AccountingStorageTRES in slurm.conf.

\fBNOTE\fR: When a generic resource is configured with the no_consume flag,
the allocation will be printed with a zero.
.IP

.TP
\f3AssocID\fP
Reference to the association of user, account and cluster.
.IP

.TP
\f3AveCPU\fP
Average (system + user) CPU time of all tasks in job.
.IP

.TP
\f3AveCPUFreq\fP
Average weighted CPU frequency of all tasks in job, in kHz.
.IP

.TP
\f3AveDiskRead\fP
Average number of bytes read by all tasks in job.
.IP

.TP
\f3AveDiskWrite\fP
Average number of bytes written by all tasks in job.
.IP

.TP
\f3AvePages\fP
Average number of page faults of all tasks in job.
.IP

.TP
\f3AveRSS\fP
Average resident set size of all tasks in job.
.IP

.TP
\f3AveVMSize\fP
Average Virtual Memory size of all tasks in job.
.IP

.TP
\fBBlockID\fR
The name of the block to be used (used with Blue Gene systems).
.IP

.TP
\f3Cluster\fP
Cluster name.
.IP

.TP
\f3Comment\fP
The job's comment string when the AccountingStoreFlags parameter
in the slurm.conf file contains 'job_comment'. The Comment
string can be modified by invoking \f3sacctmgr modify job\fP or the
specialized \f3sjobexitmod\fP command.
.IP

.TP
\fBConstraints\fR
Feature(s) the job requested as a constraint.
.IP

.TP
\fBConsumedEnergy\fR
Total energy consumed by all tasks in a job, in joules.
Value may include a unit prefix (K,M,G,T,P).
Note: Only in the case of an exclusive job allocation does this value
reflect the job's real energy consumption.
.IP

.TP
\fBConsumedEnergyRaw\fR
Total energy consumed by all tasks in a job, in joules.
Note: Only in the case of an exclusive job allocation does this value
reflect the job's real energy consumption.
.IP

.TP
\f3Container\fP
Path to OCI Container Bundle requested.
.IP

.TP
\f3CPUTime\fP
Time used (Elapsed time * CPU count) by a job or step in HH:MM:SS format.
.IP

.TP
\f3CPUTimeRAW\fP
Time used (Elapsed time * CPU count) by a job or step in cpu\-seconds.
.IP

.TP
\fBDBIndex\fR
Unique database index for entries in the job table.
.IP

.TP
\f3DerivedExitCode\fP
The highest exit code returned by the job's job steps (srun
invocations). Following the colon is the signal that caused the
process to terminate if it was terminated by a signal. The
DerivedExitCode can be modified by invoking \f3sacctmgr modify job\fP
or the specialized \f3sjobexitmod\fP command.
.IP

.TP
\f3Elapsed\fP
The job's elapsed time.

The format of this field's output is as follows:
.IP
.RS
.PD "0"
.HP
\f2[DD\-[HH:]]MM:SS\fP
.PD
.RE
.IP
as defined by the following:
.RS
.TP "10"
\f2DD\fP
days
.IP

.TP
\f2hh\fP
hours
.IP

.TP
\f2mm\fP
minutes
.IP

.TP
\f2ss\fP
seconds
.RE
.IP

.TP
\fBElapsedRaw\fR
The job's elapsed time in seconds.
.IP

.TP
\f3Eligible\fP
When the job became eligible to run. In the same format as \f3End\fP.
.IP

.TP
\f3End\fP
Termination time of the job. The output is of the format YYYY\-MM\-DDTHH:MM:SS,
unless changed through the SLURM_TIME_FORMAT environment variable.
.IP

.TP
\f3ExitCode\fP
The exit code returned by the job script or salloc, typically as set
by the exit() function. Following the colon is the signal that caused
the process to terminate if it was terminated by a signal.
.IP

.TP
\f3Extra\fP
The job's extra string when the AccountingStoreFlags parameter in the slurm.conf
file contains 'job_extra'. The Extra string can be modified by invoking
\f3sacctmgr modify job\fP command.
.IP

.TP
\f3FailedNode\fP
The name of the node whose failure caused the job to be killed.
.IP

.TP
\fBFlags\fR
Job flags. Current flags are SchedSubmit, SchedMain, SchedBackfill.
.IP

.TP
\f3GID\fP
The group identifier of the user who ran the job.
.IP

.TP
\f3Group\fP
The group name of the user who ran the job.
.IP

.TP
\f3JobID\fP
The identification number of the job or job step.
.IP

Regular jobs are in the form:
.IP

\f2JobID[.JobStep]\fP

Array jobs are in the form:
.IP

\f2ArrayJobID_ArrayTaskID\fP

Heterogeneous jobs are in the form:
.IP

\f2HetJobID+HetJobOffset\fP

When printing job arrays, performance of the command can be measurably improved
for systems with large numbers of jobs when a single job ID is specified. By
default, this field size will be limited to 64 bytes. Use the environment
variable SLURM_BITSTR_LEN to specify larger field sizes.
.IP

.TP
\f3JobIDRaw\fP
The identification number of the job or job step. Prints the JobID in the
form \f2JobID[.JobStep]\fP for regular, heterogeneous and array jobs.
.IP

.TP
\f3JobName\fP
The name of the job or job step. The \f3slurm_accounting.log\fP file
is a space delimited file. Because of this if a space is used in the
jobname an underscore is substituted for the space before the record
is written to the accounting file. So when the jobname is displayed
by \f3sacct\fP the jobname that had a space in it will now have an underscore
in place of the space.
.IP

.TP
\f3Layout\fP
What the layout of a step was when it was running. This can be used
to give you an idea of which node ran which rank in your job.
.IP

.TP
\f3MaxDiskRead\fP
Maximum number of bytes read by all tasks in job.
.IP

.TP
\f3MaxDiskReadNode\fP
The node on which the maxdiskread occurred.
.IP

.TP
\f3MaxDiskReadTask\fP
The task ID where the maxdiskread occurred.
.IP

.TP
\f3MaxDiskWrite\fP
Maximum number of bytes written by all tasks in job.
.IP

.TP
\f3MaxDiskWriteNode\fP
The node on which the maxdiskwrite occurred.
.IP

.TP
\f3MaxDiskWriteTask\fP
The task ID where the maxdiskwrite occurred.
.IP

.TP
\f3MaxPages\fP
Maximum number of page faults of all tasks in job.
.IP

.TP
\f3MaxPagesNode\fP
The node on which the maxpages occurred.
.IP

.TP
\f3MaxPagesTask\fP
The task ID where the maxpages occurred.
.IP

.TP
\f3MaxRSS\fP
Maximum resident set size of all tasks in job.
.IP

.TP
\f3MaxRSSNode\fP
The node on which the maxrss occurred.
.IP

.TP
\f3MaxRSSTask\fP
The task ID where the maxrss occurred.
.IP

.TP
\f3MaxVMSize\fP
Maximum Virtual Memory size of all tasks in job.
.IP

.TP
\f3MaxVMSizeNode\fP
The node on which the maxvmsize occurred.
.IP

.TP
\f3MaxVMSizeTask\fP
The task ID where the maxvmsize occurred.
.IP

.TP
\fBMCSLabel\fR
Multi-Category Security (MCS) label associated with the job.
Added to a job when the MCSPlugin is enabled in the slurm.conf.
.IP

.TP
\f3MinCPU\fP
Minimum (system + user) CPU time of all tasks in job.
.IP

.TP
\f3MinCPUNode\fP
The node on which the mincpu occurred.
.IP

.TP
\f3MinCPUTask\fP
The task ID where the mincpu occurred.
.IP

.TP
\f3NCPUS\fP
Total number of CPUs allocated to the job. Equivalent to \f3AllocCPUS\fP.
.IP

.TP
\f3NNodes\fP
Number of nodes in a job or step. If the job is running, or ran, this count
will be the number allocated, else the number will be the number requested.
.IP

.TP
\f3NodeList\fP
List of nodes in job/step.
.IP

.TP
\f3NTasks\fP
Total number of tasks in a job or step.
.IP

.TP
\f3Partition\fP
Identifies the partition on which the job ran.
.IP

.TP
\f3Planned\fP
How much wall clock time was used as planned time for this job. This is
derived from how long a job was waiting from eligible time to when it started or
was cancelled. Format is the same as \f3Elapsed\fP.
.IP

.TP
\f3PlannedCPU\fP
How many CPU seconds were used as planned time for this job. Format is
the same as \f3Elapsed\fP.
.IP

.TP
\f3PlannedCPURAW\fP
How many CPU seconds were used as planned time for this job. Format is
in processor seconds.
.IP

.TP
\f3Priority\fP
Slurm priority.
.IP

.TP
\f3QOS\fP
Name of Quality of Service.
.IP

.TP
\f3QOSRAW\fP
Numeric id of Quality of Service.
.IP

.TP
\f3QOSREQ\fP
List of Quality of Services requested by the job.
.IP

.TP
\fBReason\fR
The last reason a job was blocked from running for something other than
Priority or Resources. This will be saved in the database even if the job
ran to completion.
.IP

.TP
\f3ReqCPUFreq\fP
Requested CPU frequency for the step, in kHz.
Note: This value applies only to a job step. No value is reported for the job.
.IP

.TP
\f3ReqCPUFreqGov\fP
Requested CPU frequency governor for the step, in kHz.
Note: This value applies only to a job step. No value is reported for the job.
.IP

.TP
\f3ReqCPUFreqMax\fP
Maximum requested CPU frequency for the step, in kHz.
Note: This value applies only to a job step. No value is reported for the job.
.IP

.TP
\f3ReqCPUFreqMin\fP
Minimum requested CPU frequency for the step, in kHz.
Note: This value applies only to a job step. No value is reported for the job.
.IP

.TP
\f3ReqCPUS\fP
Number of requested CPUs.
.IP

.TP
\f3ReqMem\fP
Minimum required memory for the job. It may have a letter appended to it
indicating units (M for megabytes, G for gigabytes, etc.).
Note: This value is only from the job allocation, not the step.
.IP

.TP
\f3ReqNodes\fP
Requested minimum Node count for the job/step.
.IP

.TP
\f3ReqTres\fP
Trackable resources. These are the minimum resource counts requested by the
job/step at submission time.
For more details see AccountingStorageTRES in slurm.conf.
.IP

.TP
\f3ReqReservation\fP
Comma separated list of reservation names requested by the job.
.IP

.TP
\f3Reservation\fP
Reservation Name.
.IP

.TP
\f3ReservationId\fP
Reservation Id.
.IP

.TP
\f3Restarts\fP
How many times this job has been requeued/restarted.
.IP

.TP
\f3SegmentSize\fP
When a block topology is used, this is the size of the segments that will be
used to create the job allocation.
.IP

.TP
\f3Start\fP
Initiation time of the job. In the same format as \f3End\fP.
.IP

.TP
\f3State\fP
Displays the job status, or state.
See the \fBJOB STATE CODES\fR section below for a list of possible states.

If more information is available on the job state
than will fit into the current field width (for example, the UID that CANCELLED
a job) the state will be followed by a "+". You can increase the size of
the displayed state using the "%NUMBER" format modifier described earlier.

\fBNOTE\fR: The RUNNING state will return suspended jobs as well. In order
to print suspended jobs you must request SUSPENDED at a different call
from RUNNING.

\fBNOTE\fR: The RUNNING state will return any jobs completed (cancelled or
otherwise) in the time period requested as the job was also RUNNING during that
time. If you are only looking for jobs that finished, please choose the
appropriate state(s) without the RUNNING state.
.IP

.TP
\f3StdErr\fP
Display the "\fIfilename pattern\fR" for stderr redirection specified in a
job or in job steps. Path wildcards will not be substituted and will be
shown as defined in the original batch submission.
.IP

.TP
\f3StdIn\fP
Display the "\fIfilename pattern\fR" for stdin redirection specified in a
job or in job steps. Path wildcards will not be substituted and will be
shown as defined in the original batch submission.
.IP

.TP
\f3StdOut\fP
Display the "\fIfilename pattern\fR" for stdout redirection specified in a
job or in job steps. Path wildcards will not be substituted and will be
shown as defined in the original batch submission.
.IP

.TP
\f3Submit\fP
The time the job was submitted. In the same format as \f3End\fP.

\fBNOTE\fR: If a job is requeued, the submit time is reset. To obtain the
original submit time it is necessary to use the \-D or \-\-duplicate option
to display all duplicate entries for a job.
.IP

.TP
\f3SubmitLine\fP
The full command issued to submit the job.
.IP

.TP
\f3Suspended\fP
The amount of time a job or job step was suspended. Format is the same
as \f2Elapsed\fP.
.IP

.TP
\fBSystemComment\fR
The job's comment string that is typically set by a plugin.
Can only be modified by a Slurm administrator.
.IP

.TP
\f3SystemCPU\fP
The amount of system CPU time used by the job or job step. Format
is the same as \f3Elapsed\fP.

\fBNOTE\fR: See the note for TotalCPU for information about how canceled jobs
are handled.
.IP

.TP
\f3Timelimit\fP
What the timelimit was/is for the job or job step. Format is the same as
\fBElapsed\fR, but two additional special values can be displayed:
.RS
.TP
\fBPartition_limit\fR
Indicates that the job did not have its time limit set and was not yet
subjected to a partition MaxTime (i.e. job is pending). You can define the
\fBDefaultTime\fR on the partition to avoid seeing this value.
.IP
.TP
\fBUNLIMITED\fR
Indicates the job did not have a time limit defined.
.RE
.IP

.TP
\f3TimelimitRaw\fP
What the timelimit was/is for the job or job step. Format is in number of
minutes. \fBNOTE\fR: See \fBTimeLimit\fR description.
.IP

.TP
\f3TotalCPU\fP
The sum of the SystemCPU and UserCPU time used by the job or job step.
The total CPU time of the job may exceed the job's elapsed time for
jobs that include multiple job steps. Format is the same as \f3Elapsed\fP.

\fBNOTE\fR: For the steps interrupted by signal (e.g. scancel, job timeout)
TotalCPU provides a measure of the task's parent process and may not include
CPU time of child processes.
This is a result of \f3wait3\fP resource usage (\f3getrusage\fP) internals.
For processes completing in regular way all the descendant processes (forks and
execs) resources are included. However, if the processes are killed the result
may differ between proctrack plugins and end-user applications.
\"Proctrack pgid is significantly different, since it makes use of killpg
\"not kill, which seems to allow better resources usage gathering.
.IP

.TP
\f3TresUsageInAve\fP
Tres average usage in by all tasks in job.
\fBNOTE\fR: If corresponding TresUsageInMaxTask is \-1 the metric is node
centric instead of task.
.IP

.TP
\f3TresUsageInMax\fP
Tres maximum usage in by all tasks in job.
\fBNOTE\fR: If corresponding TresUsageInMaxTask is \-1 the metric is node
centric instead of task.
.IP

.TP
\f3TresUsageInMaxNode\fP
Node for which each maximum TRES usage out occurred.
.IP

.TP
\f3TresUsageInMaxTask\fP
Task for which each maximum TRES usage out occurred.
.IP

.TP
\f3TresUsageInMin\fP
Tres minimum usage in by all tasks in job.
\fBNOTE\fR: If corresponding TresUsageInMinTask is \-1 the metric is node
centric instead of task.
.IP

.TP
\f3TresUsageInMinNode\fP
Node for which each minimum TRES usage out occurred.
.IP

.TP
\f3TresUsageInMinTask\fP
Task for which each minimum TRES usage out occurred.
.IP

.TP
\f3TresUsageInTot\fP
Tres total usage in by all tasks in job.
.IP

.TP
\f3TresUsageOutAve\fP
Tres average usage out by all tasks in job.
\fBNOTE\fR: If corresponding TresUsageOutMaxTask is \-1 the metric is node
centric instead of task.
.IP

.TP
\f3TresUsageOutMax\fP
Tres maximum usage out by all tasks in job.
\fBNOTE\fR: If corresponding TresUsageOutMaxTask is \-1 the metric is node
centric instead of task.
.IP

.TP
\f3TresUsageOutMaxNode\fP
Node for which each maximum TRES usage out occurred.
.IP

.TP
\f3TresUsageOutMaxTask\fP
Task for which each maximum TRES usage out occurred.
.IP

.TP
\fBTresUsageOutMin\fR
Tres minimum usage out by all tasks in job.
.IP

.TP
\fBTresUsageOutMinNode\fR
Node for which each minimum TRES usage out occurred.
.IP

.TP
\fBTresUsageOutMinTask\fR
Task for which each minimum TRES usage out occurred.
.IP

.TP
\f3TresUsageOutTot\fP
Tres total usage out by all tasks in job.
.IP

.TP
\f3UID\fP
The user identifier of the user who ran the job.
.IP

.TP
\f3User\fP
The user name of the user who ran the job.
.IP

.TP
\f3UserCPU\fP
The amount of user CPU time used by the job or job step. Format is the same as
\f3Elapsed\fP.

\fBNOTE\fR: See the note for TotalCPU for information about how canceled jobs
are handled.
.IP

.TP
\f3WCKey\fP
Workload  Characterization  Key.   Arbitrary  string for grouping orthogonal accounts together.
.IP

.TP
\f3WCKeyID\fP
Reference to the wckey.
.IP

.TP
\fBWorkDir\fR
The directory used by the job to execute commands.
.IP

.SH "JOB STATE CODES"
The following states are recognized by sacct. A full list of possible states
is available at <https://slurm.schedmd.com/job_state_codes.html>.

.TP 20
\f3BF  BOOT_FAIL\fR
Job terminated due to launch failure, typically due to a hardware failure
(e.g. unable to boot the node or block and the job can not be requeued).
.IP

.TP
\f3CA  CANCELLED\fP
Job was explicitly cancelled by the user or system administrator.
The job may or may not have been initiated.
.IP

.TP
\f3CD  COMPLETED\fP
Job has terminated all processes on all nodes with an exit code of zero.
.IP

.TP
\f3DL  DEADLINE\fP
Job terminated on deadline.
.IP

.TP
\f3F   FAILED\fP
Job terminated with non\-zero exit code or other failure condition.
.IP

.TP
\f3NF  NODE_FAIL\fP
Job terminated due to failure of one or more allocated nodes.
.IP

.TP
\f3OOM OUT_OF_MEMORY\fP
Job experienced out of memory error.
.IP

.TP
\f3PD  PENDING\fP
Job is awaiting resource allocation.
.IP

.TP
\f3PR  PREEMPTED\fP
Job terminated due to preemption.
.IP

.TP
\f3R   RUNNING\fP
Job currently has an allocation.
.IP

.TP
\f3RQ  REQUEUED\fP
Job was requeued.
.IP

.TP
\f3RS  RESIZING\fP
Job is about to change size.
.IP

.TP
\f3RV  REVOKED\fP
Sibling was removed from cluster due to other cluster starting the job.
.IP

.TP
\f3S   SUSPENDED\fP
Job has an allocation, but execution has been suspended and CPUs have been
released for other jobs.
.IP

.TP
\f3TO  TIMEOUT\fP
Job terminated upon reaching its time limit.
.IP

.SH "DEFAULT TIME WINDOW"
.PP
The options \-\-starttime and \-\-endtime define the time window between
which \fBsacct\fR is going to search. For historical and practical
reasons their default values (i.e. the default time window)
depends on other options: \-\-jobs and \-\-state.

Depending on if \-\-jobs and/or \-\-state are specified, the default
values of \fB\-\-starttime\fR  and \fB\-\-endtime\fR options are:

.LP
WITHOUT EITHER \fB\-\-jobs\fR NOR \fB\-\-state\fR\fP specified:
.br
\fB\-\-starttime\fR defaults to Midnight.
.br
\fB\-\-endtime\fR defaults to Now.

.LP
WITH \fB\-\-jobs\fR AND WITHOUT \fB\-\-state\fR\fP specified:
.br
\fB\-\-starttime\fR defaults to Epoch 0.
.br
\fB\-\-endtime\fR defaults to Now.

.LP
WITHOUT \fB\-\-jobs\fR AND WITH \fB\-\-state\fR\fP specified:
.br
\fB\-\-starttime\fR defaults to Now.
.br
\fB\-\-endtime\fR defaults to \-\-starttime and to Now if \-\-starttime is not specified.

.LP
WITH BOTH \fB\-\-jobs\fR AND \fB\-\-state\fR\fP specified:
.br
\fB\-\-starttime\fR defaults to Epoch 0.
.br
\fB\-\-endtime\fR defaults to \-\-starttime or to Now if \-\-starttime is not specified.

.PP
\fBNOTE\fR: With \fB\-v/\-\-verbose\fR a message about the actual time
window in use is shown.

.SH "PERFORMANCE"
.PP
Executing \fBsacct\fR sends a remote procedure call to \fBslurmdbd\fR. If
enough calls from \fBsacct\fR or other Slurm client commands that send remote
procedure calls to the \fBslurmdbd\fR daemon come in at once, it can result in a
degradation of performance of the \fBslurmdbd\fR daemon, possibly resulting in a
denial of service.
.PP
Do not run \fBsacct\fR or other Slurm client commands that send remote procedure
calls to \fBslurmdbd\fR from loops in shell scripts or other programs. Ensure
that programs limit calls to \fBsacct\fR to the minimum necessary for the
information you are trying to gather.

.SH "ENVIRONMENT VARIABLES"
.PP
Some \fBsacct\fR options may
be set via environment variables. These environment variables,
along with their corresponding options, are listed below. (Note:
Command line options will always override these settings.)

.TP 20
\fBSACCT_FEDERATION\fR
Same as \fB\-\-federation\fR
.IP

.TP
\fBSACCT_FORMAT\fR
Allows you to define the columns to display in the output.
Same as \fB\-\-format\fR
.IP

.TP
\fBSACCT_LOCAL\fR
Same as \fB\-\-local\fR
.IP

.TP
\fBSLURM_BITSTR_LEN\fR
Specifies the string length to be used for holding a job array's task ID
expression. The default value is 64 bytes. A value of 0 will print the full
expression with any length required. Larger values may adversely impact the
application performance.
.IP

.TP
\fBSLURM_CONF\fR
The location of the Slurm configuration file.
.IP

.TP
\fBSLURM_DEBUG_FLAGS\fR
Specify debug flags for sacct to use. See DebugFlags in the
\fBslurm.conf\fR(5) man page for a full list of flags. The environment
variable takes precedence over the setting in the slurm.conf.
.IP

.TP
\fBSLURM_JSON\fR
Control JSON serialization:
.IP
.RS
.TP
\fBcompact\fR
Output JSON as compact as possible.
.IP

.TP
\fBpretty\fR
Output JSON in pretty format to make it more readable.
.IP
.RE

.TP
\fBSLURM_TIME_FORMAT\fR
Specify the format used to report time stamps. A value of \fIstandard\fR, the
default value, generates output in the form "year\-month\-dateThour:minute:second".
A value of \fIrelative\fR returns only "hour:minute:second" if the current day.
For other dates in the current year it prints the "hour:minute" preceded by
"Tomorr" (tomorrow), "Ystday" (yesterday), the name of the day for the coming
week (e.g. "Mon", "Tue", etc.), otherwise the date (e.g. "25 Apr").
For other years it returns a date month and year without a time (e.g.
"6 Jun 2012"). All of the time stamps use a 24 hour format.

A valid strftime() format can also be specified. For example, a value of
"%a %T" will report the day of the week and a time stamp (e.g. "Mon 12:34:56").
.IP

.TP
\fBSLURM_YAML\fR
Control YAML serialization:
.IP
.RS
.TP
\fBcompact\fR Output YAML as compact as possible.
.IP

.TP
\fBpretty\fR Output YAML in pretty format to make it more readable.
.RE
.IP

.SH "EXAMPLES"
This example illustrates the default invocation of the \f3sacct\fP
command:
.RS
.PP
.nf
.ft 3
# sacct
Jobid      Jobname    Partition    Account AllocCPUS State     ExitCode
\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-
2          script01   srun       acct1               1 RUNNING           0
3          script02   srun       acct1               1 RUNNING           0
4          endscript  srun       acct1               1 RUNNING           0
4.0                   srun       acct1               1 COMPLETED         0

.ft 1
.fi
.RE
.PP
This example shows the same job accounting information with the
\f3brief\fP option.
.RS
.PP
.nf
.ft 3
# sacct \-\-brief
     Jobid     State  ExitCode
\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-
2          RUNNING           0
3          RUNNING           0
4          RUNNING           0
4.0        COMPLETED         0
.ft 1
.fi
.RE
.PP
.RS
.PP
.nf
.ft 3
# sacct \-\-allocations
Jobid      Jobname    Partition Account    AllocCPUS  State     ExitCode
\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-
3          sja_init   andy       acct1            1 COMPLETED         0
4          sjaload    andy       acct1            2 COMPLETED         0
5          sja_scr1   andy       acct1            1 COMPLETED         0
6          sja_scr2   andy       acct1           18 COMPLETED         2
7          sja_scr3   andy       acct1           18 COMPLETED         0
8          sja_scr5   andy       acct1            2 COMPLETED         0
9          sja_scr7   andy       acct1           90 COMPLETED         1
10         endscript  andy       acct1          186 COMPLETED         0

.ft 1
.fi
.RE
.PP
This example demonstrates the ability to customize the output of the
\f3sacct\fP command. The fields are displayed in the order designated
on the command line.
.RS
.PP
.nf
.ft 3
# sacct \-\-format=jobid,elapsed,ncpus,ntasks,state
     Jobid    Elapsed      Ncpus   Ntasks     State
\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-
3            00:01:30          2        1 COMPLETED
3.0          00:01:30          2        1 COMPLETED
4            00:00:00          2        2 COMPLETED
4.0          00:00:01          2        2 COMPLETED
5            00:01:23          2        1 COMPLETED
5.0          00:01:31          2        1 COMPLETED

.ft 1
.fi
.RE
.PP
This example demonstrates the use of the \-T (\-\-truncate) option when
used with \-S (\-\-starttime) and \-E (\-\-endtime). When the \-T option is
used, the start time of the job will be the specified
\-S value if the job was started before the specified time, otherwise
the time will be the job's start time. The end time will be the specified \-E
option if the job ends after the specified time, otherwise it will be
the jobs end time.

Without \-T (normal operation) sacct output would be like this.
.RS
.PP
.nf
.ft 3
# sacct \-S2014\-07\-03\-11:40 \-E2014\-07\-03\-12:00 \-X \-ojobid,start,end,state
    JobID                 Start                  End        State
\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\-
2         2014\-07\-03T11:33:16   2014\-07\-03T11:59:01   COMPLETED
3         2014\-07\-03T11:35:21   Unknown               RUNNING
4         2014\-07\-03T11:35:21   2014\-07\-03T11:45:21   COMPLETED
5         2014\-07\-03T11:41:01   Unknown               RUNNING
.ft 1
.fi
.RE
.PP
By adding the \-T option the job's start and end times are truncated
to reflect only the time requested. If a job started after the start
time requested or finished before the end time requested those times
are not altered. The \-T option
is useful when determining exact run times during any given period.
.RS
.PP
.nf
.ft 3
# sacct \-T \-S2014\-07\-03\-11:40 \-E2014\-07\-03\-12:00 \-X \-ojobid,jobname,user,start,end,state
    JobID                 Start                  End        State
\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\-
2         2014\-07\-03T11:40:00   2014\-07\-03T11:59:01   COMPLETED
3         2014\-07\-03T11:40:00   2014\-07\-03T12:00:00   RUNNING
4         2014\-07\-03T11:40:00   2014\-07\-03T11:45:21   COMPLETED
5         2014\-07\-03T11:41:01   2014\-07\-03T12:00:00   RUNNING

.ft 1
.fi
.RE
.PP
\fBNOTE\fR: If no \fB\-s\fR (\fB\-\-state\fR) option is given sacct will
display eligible jobs during the specified period of time, otherwise it
will return jobs that were in the state requested during that period of
time.

This example demonstrates the differences running sacct with and without
the \fB\-\-state\fR flag for the same time period. Without the
\fB\-\-state\fR option, all eligible jobs in that time period are shown.
.RS
.PP
.nf
.ft 3
# sacct \-S11:20:00 \-E11:25:00 \-X \-ojobid,start,end,state
       JobID               Start                 End      State
-\-\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-
2955                    11:15:12            11:20:12  COMPLETED
2956                    11:20:13            11:25:13  COMPLETED
.ft 1
.fi
.RE
.PP
With the \fB\-\-state=pending\fR option, only job 2956 will be shown because
it had a dependency on 2955 and was still PENDING from 11:20:00 until it
started at 11:21:13. Note that even though we requested PENDING jobs, the
State shows as COMPLETED because that is the current State of the job.
.RS
.PP
.nf
.ft 3
# sacct \-\-state=pending \-S11:20:00 \-E11:25:00 \-X \-ojobid,start,end,state
       JobID               Start                 End      State
-\-\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\- \-\-\-\-\-\-\-\-\-\-
2956                    11:20:13            11:25:13  COMPLETED
.ft 1
.fi
.RE

.SH "COPYING"
Copyright (C) 2005\-2007 Copyright Hewlett\-Packard Development Company L.P.
.br
Copyright (C) 2008\-2010 Lawrence Livermore National Security.
Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
.br
Copyright (C) 2010\-2022 SchedMD LLC.
.LP
This file is part of Slurm, a resource management program.
For details, see <https://slurm.schedmd.com/>.
.LP
Slurm is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option)
any later version.
.LP
Slurm is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
details.

.SH "FILES"
.TP "10"
\f3/etc/slurm.conf\fP
Entries to this file enable job accounting and
designate the job accounting log file that collects system job accounting.
.IP

.TP
\f3/var/log/slurm_accounting.log\fP
The default job accounting log file.
By default, this file is set to read and write permission for root only.

.SH "SEE ALSO"
\fBsstat\fR(1), \fBps\fR (1), \fBsrun\fR(1), \fBsqueue\fR(1),
\fBgetrusage\fR (2), \fBtime\fR (2)
