# who

## PROLOG



           This manual page is part of the POSIX Programmer's Manual.  The
           Linux implementation of this interface may differ (consult the
           corresponding Linux manual page for details of Linux behavior), or
           the interface may not be implemented on Linux.
    


## NAME



           who — display who is on the system
    


## SYNOPSIS



           who **[** -mTu**] [** -abdHlprt**] [**_file_**]**
    
           who **[** -mu**]** -s **[** -bHlprt**] [**_file_**]**
    
           who -q **[**_file_**]**
    
           who am i
    
           who am I
    


## DESCRIPTION



           The _who_ utility shall list various pieces of information about
           accessible users. The domain of accessibility is implementation-
           defined.
    
           Based on the options given, _who_ can also list the user's name,
           terminal line, login time, elapsed time since activity occurred on
           the line, and the process ID of the command interpreter for each
           current system user.
    


## OPTIONS



           The _who_ utility shall conform to the Base Definitions volume of
           POSIX.1‐2017, _Section 12.2_ , _Utility Syntax Guidelines_.
    
           The following options shall be supported. The metavariables, such
           as <_line_ >, refer to fields described in the STDOUT section.
    
           **-a** Process the implementation-defined database or named
                     file with the **-b** , **-d** , **-l** , **-p** , **-r** , **-t** , **-T** and **-u** options
                     turned on.
    
           **-b** Write the time and date of the last system reboot. The
                     system reboot time is the time at which the
                     implementation is able to commence running processes.
    
           **-d** Write a list of all processes that have expired and not
                     been respawned by the _init_ system process. The <_exit_ >
                     field shall appear for dead processes and contain the
                     termination and exit values of the dead process. This
                     can be useful in determining why a process terminated.
    
           **-H** Write column headings above the regular output.
    
           **-l**(The letter ell.) List only those lines on which the
                     system is waiting for someone to login. The <_name_ > field
                     shall be **LOGIN** in such cases. Other fields shall be the
                     same as for user entries except that the <_state_ > field
                     does not exist.
    
           **-m** Output only information about the current terminal.
    
           **-p** List any other process that is currently active and has
                     been previously spawned by _init_.
    
           **-q**(Quick.) List only the names and the number of users
                     currently logged on. When this option is used, all other
                     options shall be ignored.
    
           **-r** Write the current _run-level_ of the _init_ process.
    
           **-s** List only the <_name_ >, <_line_ >, and <_time_ > fields.  This
                     is the default case.
    
           **-t** Indicate the last change to the system clock.
    
           **-T** Show the state of each terminal, as described in the
                     STDOUT section.
    
           **-u** Write ``idle time'' for each displayed user in addition
                     to any other information. The idle time is the time
                     since any activity occurred on the user's terminal. The
                     method of determining this is unspecified.  This option
                     shall list only those users who are currently logged in.
                     The <_name_ > is the user's login name. The <_line_ > is the
                     name of the line as found in the directory **/dev**.  The
                     <_time_ > is the time that the user logged in. The
                     <_activity_ > is the number of hours and minutes since
                     activity last occurred on that particular line. A dot
                     indicates that the terminal has seen activity in the
                     last minute and is therefore ``current''. If more than
                     twenty-four hours have elapsed or the line has not been
                     used since boot time, the entry shall be marked <_old_ >.
                     This field is useful when trying to determine whether a
                     person is working at the terminal or not. The <_pid_ > is
                     the process ID of the user's login process.
    


## OPERANDS



           The following operands shall be supported:
    
           **am i** , **am I**
                     In the POSIX locale, limit the output to describing the
                     invoking user, equivalent to the **-m** option. The **am** and **i**
                     or **I** must be separate arguments.
    
           _file_      Specify a pathname of a file to substitute for the
                     implementation-defined database of logged-on users that
                     _who_ uses by default.
    


## STDIN



           Not used.
    


## INPUT FILES



           None.
    


## ENVIRONMENT VARIABLES



           The following environment variables shall affect the execution of
           _who_ :
    
           _LANG_      Provide a default value for the internationalization
                     variables that are unset or null. (See the Base
                     Definitions volume of POSIX.1‐2017, _Section 8.2_ ,
                     _Internationalization Variables_ for the precedence of
                     internationalization variables used to determine the
                     values of locale categories.)
    
           _LC_ALL_    If set to a non-empty string value, override the values
                     of all the other internationalization variables.
    
           _LC_CTYPE_  Determine the locale for the interpretation of sequences
                     of bytes of text data as characters (for example,
                     single-byte as opposed to multi-byte characters in
                     arguments).
    
           _LC_MESSAGES_
                     Determine the locale that should be used to affect the
                     format and contents of diagnostic messages written to
                     standard error.
    
           _LC_TIME_   Determine the locale used for the format and contents of
                     the date and time strings.
    
           _NLSPATH_   Determine the location of message catalogs for the
                     processing of _LC_MESSAGES_.
    
           _TZ_        Determine the timezone used when writing date and time
                     information. If _TZ_ is unset or null, an unspecified
                     default timezone shall be used.
    


## ASYNCHRONOUS EVENTS



           Default.
    


## STDOUT



           The _who_ utility shall write its default format to the standard
           output in an implementation-defined format, subject only to the
           requirement of containing the information described above.
    
           XSI-conformant systems shall write the default information to the
           standard output in the following general format:
    
               <_name_ >**[** <_state_ >**]** <_line_ ><_time_ >**[** <_activity_ >**][** <_pid_ >**][** <_comment_ >**][** <_exit_ >**]**
    
           For the **-b** option, <_line_ > shall be **"system** boot"**.** The <_name_ > is
           unspecified.
    
           The following format shall be used for the **-T** option:
    
               "%s %c %s %s\n" <_name_ >, <_terminal state_ >, <_terminal name_ >,
                   <_time of login_ >
    
           where <_terminal state_ > is one of the following characters:
    
           +       The terminal allows write access to other users.
    
           -       The terminal denies write access to other users.
    
           ?       The terminal write-access state cannot be determined.
    
           <space> This entry is not associated with a terminal.
    
           In the POSIX locale, the <_time of login_ > shall be equivalent in
           format to the output of:
    
               date +"%b %e %H:%M"
    
           If the **-u** option is used with **-T** , the idle time shall be added to
           the end of the previous format in an unspecified format.
    


## STDERR



           The standard error shall be used only for diagnostic messages.
    


## OUTPUT FILES



           None.
    


## EXTENDED DESCRIPTION



           None.
    


## EXIT STATUS



           The following exit values shall be returned:
    
            0    Successful completion.
    
           >0    An error occurred.
    


## CONSEQUENCES OF ERRORS



           Default.
    
           _The following sections are informative._
    


## APPLICATION USAGE



           The name _init_ used for the system process is the most commonly
           used on historical systems, but it may vary.
    
           The ``domain of accessibility'' referred to is a broad concept
           that permits interpretation either on a very secure basis or even
           to allow a network-wide implementation like the historical _rwho_.
    


## EXAMPLES



           None.
    


## RATIONALE



           Due to differences between historical implementations, the base
           options provided were a compromise to allow users to work with
           those functions. The standard developers also considered removing
           all the options, but felt that these options offered users
           valuable functionality. Additional options to match historical
           systems are available on XSI-conformant systems.
    
           It is recognized that the _who_ command may be of limited
           usefulness, especially in a multi-level secure environment. The
           standard developers considered, however, that having some standard
           method of determining the ``accessibility'' of other users would
           aid user portability.
    
           No format was specified for the default _who_ output for systems not
           supporting the XSI option. In such a user-oriented command,
           designed only for human use, this was not considered to be a
           deficiency.
    
           The format of the terminal name is unspecified, but the
           descriptions of _ps_ , _talk_ , and _write_ require that they use the same
           format.
    
           It is acceptable for an implementation to produce no output for an
           invocation of _who_ **mil**.
    


## FUTURE DIRECTIONS



           None.
    


* * *