//po4a: entry man manual
////
Copyright (C) 1998-2004 Miquel van Smoorenburg.

This program 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.

This program 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.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <https://gnu.org/licenses/>.
////
ifdef::neverdefined[---]

= last(1)
:doctype: manpage
:man manual: User Commands
:man source: util-linux {release-version}
:page-layout: base
:command: last

== NAME

last, lastb - show a listing of last logged in users

== SYNOPSIS

*last* [options] [_username_|_tty_]...

*lastb* [options] [_username_|_tty_]...

== DESCRIPTION

*last* searches back through the _/var/log/wtmp_ file (or the file given with the *-f* option)
and displays a list of all users who logged in (and out) since that file was created.
One or more _usernames_ and/or _ttys_ can be given, in which case *last* will show only
the entries matching those arguments. (Names of _ttys_ can be abbreviated, thus *last 0*
is the same as *last tty0*.)

When catching a *SIGINT* or *SIGQUIT* signal, *last* will show how far it has searched through
the file, and in case of the *SIGINT* signal (generated by the interrupt key, usually control-C)
*last* will then terminate.

The pseudo user *reboot* logs in each time the system is rebooted. Thus *last reboot* will show a log of all the reboots since the log file was created.

*lastb* is the same as *last*, except that by default it shows a log of the _/var/log/btmp_ file, which contains all the bad login attempts.

== OPTIONS

*-a*, *--hostlast*::
Display the hostname in the last column. Useful in combination with the *-d* option.

*-d*, *--dns*::
For non-local logins, Linux stores not only the host name of the remote host, but its IP number as well. This option translates the IP number back into a hostname.

*-f*, *--file* _file_::
Tell *last* to use a specific _file_ instead of _/var/log/wtmp_. The *-f* option
can be given multiple times, and all of the specified files will be processed.

*-F*, *--fulltimes*::
Print full login and logout times and dates.

*-i*, *--ip*::
Like *-d*, but displays the host's IP number instead of the name.

*-n*, *--limit* _number_::
The maximum amount of logins to show.

**-**_number_::
The same as *-n* _number_.

*-p*, *--present* _time_::
Display the users who were present at the specified _time_.
For ways to specify _time_, see the section *TIME FORMATS* below.

*-R*, *--nohostname*::
Suppresses the display of the hostname field.

*-s*, *--since* _time_::
Display the state of logins since the specified _time_.
The option can be combined with *-t* to cover a period.

*-t*, *--until* _time_::
Display the state of logins until the specified _time_.

*-T*, *--tab-separated*::
Use ASCII *tab* characters to separate the columns in the output instead of spaces.

*--time-format* _format_::
Define the appearance of the timestamp to be one of: *notime*, *short*, *full*, or *iso*.
The *notime* variant will not print any timestamps at all, *short* is the default,
and *full* is the same as the *--fulltimes* option.
The *iso* variant will display the timestamp in ISO-8601 format.
The ISO format contains timezone information, making it preferable when
printouts are investigated outside of the system.

*-w*, *--fullnames*::
Display full user names and domain names / IP addresses.
When this option is not specified, user names are truncated to 8 characters,
and domain names and IP addresses to 16 characters.
An asterisk is shown as the last character of truncated fields.

*-x*, *--system*::
Display the system shutdown entries and run level changes.

include::man-common/help-version.adoc[]

== TIME FORMATS

The argument _time_ allows the following forms:
....
 YYYYMMDDhhmmss
 "YYYY-MM-DD hh:mm:ss"
 "YYYY-MM-DD hh:mm"      (seconds is 00)
 YYYY-MM-DD              (time is 00:00:00)
 hh:mm:ss                (date is today)
 hh:mm                   (date is today, seconds is 00)
 now
 today                   (time is 00:00:00)
 yesterday               (time is 00:00:00)
 -number[smhd]           (seconds/minutes/hours/days before now)
....
Examples of the **-**_number_[*smhd*] format are: *-5m*, *-6h*, *-2d*.
The unit specifier may be longer: *-5min*, *-6hours*, *-2days*.

== FILES

_/var/log/wtmp_,
_/var/log/btmp_

== NOTES

The files _wtmp_ and _btmp_ might not be found. The system only logs information in these files if they are present. This is a local configuration issue. If you want the files to be used, they can be created with a simple *touch*(1) command (for example, *touch /var/log/wtmp*).

An empty entry is a valid type of wtmp entry. It means that an empty file or file with zeros is not interpreted as an error.

The utmp file format uses fixed sizes of strings, which means that very long strings are impossible to store in the file and impossible to display by *last*. The usual limits are 32 bytes for a user and line name and 256 bytes for a hostname.

== AUTHORS

mailto:miquels@cistron.nl[Miquel van Smoorenburg]

== SEE ALSO

*login*(1),
*wtmp*(5),
*init*(8),
*shutdown*(8)

include::man-common/bugreports.adoc[]

include::man-common/footer.adoc[]

ifdef::translation[]
include::man-common/translation.adoc[]
endif::[]
