ps aux seems to conveniently list all processes and their status and resource usage (Linux/BSD/MacOS), however I cannot comprehend the meaning of parameter
Stack Exchange network consists of 181 Q&A communities including Stack Overflow, the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.Visit Stack Exchange
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It only takes a minute to sign up.Sign up to join this community
a = show processes for all users
u = display the process's user/owner
x = also show processes not attached to a terminal
By the way,
man ps is a good resource.
Historically, BSD and AT&T developed incompatible versions of
ps. The options without a leading dash (as per the question) are the BSD style while those with a leading dash are AT&T Unix style. On top of this, Linux developed a version which supports both styles and then adds to it a third style with options that begin with double dashes.
All (or nearly all) non-embedded Linux distributions use a variant of the procps suite. The above options are as defined in the procps
ps man page.
In the comments, you say you are using Apple MacOS (OSX, I presume). The OSX man page for
ps is here and it shows support only for AT&T style.
-uas opposed to just
psand the Apple OSX version. This question is currently tagged "Linux". If you are asking also about MacOS, you might want to update the tags.
aux, MacOS' manual page does not have such information, it might be a document bug.
psdoes say "...
ps auxstill works as it did in Tiger" under "Legacy Description" section.
man psis a good resource on mac OSX. The man page, only at the very end, notes that
ps auxis maintained as a convenience, but there is absolutely no hint that options may be specified without leading hyphens before the end, the man page is long and richly complex, and a reader can spend a lot of time questioning his/her sanity before giving up and googling for this stackexchange question. Jan 13, 2018 at 23:31
man ps describes these options as follows:
a Lift the BSD-style "only yourself" restriction, which is imposed upon the set of all processes when some BSD-style (without "-") options are used or when the ps personality setting is BSD-like. The set of processes selected in this manner is in addition to the set of processes selected by other means. An alternate description is that this option causes ps to list all processes with a terminal (tty), or to list all processes when used together with the x option. u Display user-oriented format. x Lift the BSD-style "must have a tty" restriction, which is imposed upon the set of all processes when some BSD-style (without "-") options are used or when the ps personality setting is BSD-like. The set of processes selected in this manner is in addition to the set of processes selected by other means. An alternate description is that this option causes ps to list all processes owned by you (same EUID as ps), or to list all processes when used together with the a option.
$ ps aux | head -10 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 51120 2796 ? Ss Dec22 0:09 /usr/lib/systemd/systemd --system --deserialize 22 root 2 0.0 0.0 0 0 ? S Dec22 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S Dec22 0:04 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S< Dec22 0:00 [kworker/0:0H] root 7 0.0 0.0 0 0 ? S Dec22 0:15 [migration/0] root 8 0.0 0.0 0 0 ? S Dec22 0:00 [rcu_bh] root 9 0.0 0.0 0 0 ? S Dec22 2:47 [rcu_sched] ... saml 3015 0.0 0.0 117756 596 pts/2 Ss Dec22 0:00 bash saml 3093 0.9 4.1 1539436 330796 ? Sl Dec22 70:16 /usr/lib64/thunderbird/thunderbird saml 3873 0.0 0.1 1482432 8628 ? Sl Dec22 0:02 gvim -f root 5675 0.0 0.0 124096 412 ? Ss Dec22 0:02 /usr/sbin/crond -n root 5777 0.0 0.0 51132 1068 ? Ss Dec22 0:08 /usr/sbin/wpa_supplicant -u -f /var/log/wpa_supplica saml 5987 0.7 1.5 1237740 119876 ? Sl Dec26 14:05 /opt/google/chrome/chrome --type=renderer --lang=en- root 6115 0.0 0.0 0 0 ? S Dec27 0:06 [kworker/0:2] ...
With the above switches you'll get output regarding your processes like above.
aux will show you:
The key to understanding the manpage is not to search for "aux" (which I tried first), but to focus on the section that describes the kinds of parameter
This version of ps accepts several kinds of options:
- UNIX options, which may be grouped and must be preceded by a dash.
- BSD options, which may be grouped and must not be used with a dash.
- GNU long options, which are preceded by two dashes.
From this, we know that
aux is a set of (grouped) BSD options,
x, which makes them slightly easier to look up.
x control which processes are selected, and used together are explicitly described to select all processes.
u outputs using the "user-oriented" format, which gives more columns, including the user id and CPU/memory usage.
u alone controls the output format, you can get "ps aux" style output just for specific processes with
ps u $pid1 $pid2 ....
for me, both
/bin/ps --version and
/usr/bin/ps --version gets:
ps from procps-ng 3.3.16
ps is a command provided by procps:
Command line and full screen utilities for browsing
procfs, a "pseudo" file system dynamically generated by the kernel to provide information about the status of entries in its process table.
To see every process on the system using:
BTW, example of
USER PID COMMAND root 1 /sbin/init splash root 2 [kthreadd] root 3 [rcu_gp] root 4 [rcu_par_gp] root 6 [kworker/0:0H-kblockd] root 9 [kworker/u80:0-ixgbe]
By this POSIX and UNIX standards,
ps -aux means
ps -a -ux , printing:
1. processes with tty (except session leaders) [by
2. all processes owned by a user named "x" [by
-u: select processes by effective user)
Process selection options are additive (A process will be shown if it meets any of the given selection criteria)
If the user named "x" (the current user?) does not exist,
ps -auxmay fall to
ps aux, and print a warning
there is no
-x option in manpage, but
ps -x can find the same processes as
ps -ux, (in a different output format)
ps -ux --format=usergets:
ps -x --format=user
This behavior is intended to aid in transitioning old scripts and habits. It is fragile, and thus should not be relied upon
a: all users
x: list all processes owned by you (same EUID as ps). Or more concretely, include processes with no controlling terminal (include processes not attached to a terminal).
ax will list all processes
u: output in resource usage format