1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
//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, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
////
= 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 designated by the *-f* option) and displays a list of all users 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* signal (generated by the interrupt key, usually control-C) or a *SIGQUIT* signal, *last* will show how far it has searched through the file; in the case of the *SIGINT* signal *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 *--dns* 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 *--file* 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 *--dns ,* but displays the host's IP number instead of the name.
**-**__number__; *-n*, *--limit* _number_::
Tell *last* how many lines to show.
*-p*, *--present* _time_::
Display the users who were present at the specified time. This is like using the options *--since* and *--until* together with the same _time_.
*-R*, *--nohostname*::
Suppresses the display of the hostname field.
*-s*, *--since* _time_::
Display the state of logins since the specified _time_. This is useful, e.g., to easily determine who was logged in at a particular time. The option is often combined with *--until*.
*-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 output timestamp _format_ 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 in the output.
*-x*, *--system*::
Display the system shutdown entries and run level changes.
include::man-common/help-version.adoc[]
== TIME FORMATS
The options that take the _time_ argument understand the following formats:
[cols=",",]
|===
|YYYYMMDDhhmmss |
|YYYY-MM-DD hh:mm:ss |
|YYYY-MM-DD hh:mm |(seconds will be set to 00)
|YYYY-MM-DD |(time will be set to 00:00:00)
|hh:mm:ss |(date will be set to today)
|hh:mm |(date will be set to today, seconds to 00)
|now |
|yesterday |(time is set to 00:00:00)
|today |(time is set to 00:00:00)
|tomorrow |(time is set to 00:00:00)
|+5min |
|-5days |
|===
== 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::[]
|