w - Man Page

Show who is logged on and what they are doing.

Examples (TL;DR)

Synopsis

w [option ...] [user]

Description

w displays information about the users currently on the machine, and their processes.  The header shows, in this order, the current time, how long the system has been running, how many users are currently logged on, and the system load averages for the past 1, 5, and 15 minutes.

The following entries are displayed for each user: login name, the tty name, the remote host, login time, idle time, JCPU, PCPU, and the command line of their current process.

The JCPU time is the time used by all processes attached to the tty.  It does not include past background jobs, but does include currently running background jobs.

The PCPU time is the time used by the current process, named in the "what" field.

Options

-c,  --container

show the container uptime instead of system uptime in the header.

-h,  --no-header

Don't print the header.

-u,  --no-current

Ignores the username while figuring out the current process and cpu times.  To demonstrate this, do a su and do a w and a w -u.

-s,  --short

Use the short format.  Don't print the login time, JCPU or PCPU times.

-t,  --terminal

Usually w will use either the systemd sessions table or the utmp file to locate users. In terminal mode w will scan the terminal devices and locate user sessions this way. This is not a true count of users, for example a user with two xterms will show up twice, so the user count in the header will be different. Currently terminal devices scanned are /dev/tty* and /dev/pts/*.

-f,  --from

Toggle printing the from (remote hostname) field.  The default as released is for the from field to not be printed, although your system administrator or distribution maintainer may have compiled a version in which the from field is shown by default.

--help

Display help text and exit.

-i,  --ip-addr

Display IP address instead of hostname for from field. This option only works on non-systemd platforms as libsystemd only provides the remote host.

-p,  --pids

Display pid of the login process/the "what" process in the "what" field. The login process is also called the session leader.

-V,  --version

Display version information.

-o,  --old-style

Old style output.  Prints blank space for idle times less than one minute.

user

Show information about the specified user only.

Environment

PROCPS_CONTAINER

If $PROCPS_CONTAINER is set, then w behaves as if the --container option has been given.

PROCPS_USERLEN

Override the default width of the username column.  Defaults to 8.

PROCPS_FROMLEN

Override the default width of the from column.  Defaults to 16.

Files

/var/run/utmp

information about who is currently logged on, only for non-systemd hosts.

/proc

process information

/dev/tty* , /dev/pts/*

Terminal device files scanned with --terminal mode.

Bugs

When using --terminal option, w assumes processes with a parent PID of 0 or 1 are agetty(8) processes and will not display them. This is prone to both false postive and negative errors.

Idle time for users on certain sessions, such as X/Wayland sessions, will be incorrect. The --terminal option will show the correct idle times for terminal sessions on X/Wayland.

On platforms using systemd(1) the --ip-addr option will be ignored and the from column will report the remote host as either a hostname or IP address.

Reporting Bugs

Please send bug reports to procps@freelists.org.

See Also

free(1), loginctl(1), ps(1), systemd(1), top(1), uptime(1), who(1), utmp(5), agetty(8)

Referenced By

cchkhs.f(3), finger(1), procinfo(8), rpc.rusersd(8), rwhod(8), setproctitle.3bsd(3), shellinaboxd(1), tload(1), top(1), uptime(1), utmpdump(1), whowatch(1), zchkhs.f(3).

2025-11-29 procps-ng