Master Linux Resource Monitoring: How to Use /usr/bin/time Effectively
This guide explains how to use the Linux /usr/bin/time utility to measure program resource usage—including user and kernel CPU time, memory consumption, and I/O statistics—covers its syntax, common options, custom format strings, and the distinction between the external command and the shell built‑in.
Overview
Sometimes you may want to analyze your program based on parameters such as time spent in user mode, time spent in kernel mode, average memory usage, etc. Linux provides a dedicated utility called
timefor this purpose.
Syntax
<code>/usr/bin/time [options] program [arguments]</code>Common Options
-v, --verbose: output a detailed description.
--quiet: suppress status messages.
-f, --format: control output format.
-p, --portability: produce POSIX‑compatible output.
-o FILE, --output=FILE: redirect output to a file (overwrites).
-a, --append: append output to a file instead of overwriting.
Sample Output
<code># /usr/bin/time ls
0.00 user 0.00 system 0.00%CPU (0avgtext+0avgdata 3888maxresident)k
0 inputs+0outputs (0major+304minor)pagefaults 0 swaps</code>Format Options
Custom format strings consist of resource specifiers introduced by
%. Escape sequences such as
\t(tab) and
\n(newline) are supported. Text not part of a specifier is copied verbatim.
<code>$ /usr/bin/time -f "\t%U user,\t%S system,\t%x status" date
Sun Jan 22 17:46:58 IST 2012
0.00 user, 0.00 system, 0 status</code>Resource Specifiers
Below is a non‑exhaustive list of specifiers that
timecan report (excerpt from the manual page):
C: command name and arguments.
D: average size of the unshared data segment (KB).
E: elapsed real (wall‑clock) time ([hh:]mm:ss).
F: major page faults.
I: number of file system inputs.
K: average total memory usage (KB).
M: maximum resident set size (KB).
O: number of file system outputs.
P: CPU percentage (user+system)/elapsed.
R: minor (reclaimable) page faults.
S: CPU seconds spent in kernel mode.
U: CPU seconds spent in user mode.
W: number of swaps.
X: average size of shared text (KB).
Z: system page size (bytes).
c: involuntary context switches.
e: elapsed real time (seconds).
k: number of signals delivered.
p: average unshared stack size (KB).
r: number of socket messages received.
s: number of socket messages sent.
t: average resident set size (KB).
w: voluntary context switches.
x: exit status.
Why Use /usr/bin/time?
The shell built‑in
timedoes not accept the same options as the external
/usr/bin/time. Invoking
timewithout the full path may result in errors such as “command not found” for
-f. To access the full feature set, call the external binary explicitly.
Use
man timeto view the manual for
/usr/bin/timeand
help timefor the built‑in version.
Raymond Ops
Linux ops automation, cloud-native, Kubernetes, SRE, DevOps, Python, Golang and related tech discussions.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.