如何在Linux上使用last命令

时间:2020-01-09 10:39:54  来源:igfitidea点击:

wtmp文件

Linux和其他类似Unix的操作系统(例如MacOS)非常擅长记录日志。在系统的某个地方,有一个日志记录了我们可以想到的所有内容。我们感兴趣的日志文件称为" wtmp"。 w可能代表什么时候或者似乎没有人同意。 tmp部分可能代表临时,但也可能代表时间戳。

我们所知道的是wtmp是一个捕获并记录每个登录和注销事件的日志。查看wtmp日志中的数据是采取安全意识的方法来执行系统管理员职责的基本步骤。对于典型的家用计算机,从安全角度来看可能并不那么重要,但是能够复查计算机的组合使用很有趣。

与Linux中许多基于文本的日志文件不同," wtmp"是一个二进制文件。要访问其中的数据,我们需要使用为该任务设计的工具。

该工具是" last"命令。

last命令

" last"命令从" wtmp"日志中读取数据,并将其显示在终端窗口中。

如果键入last并按Enter,它将显示日志文件中的所有记录。

last

来自" wtmp"的每个记录都显示在终端窗口中。

从左到右,每行包含:

  • 登录用户的用户名。

  • 他们登录的终端。终端条目":0"表示它们已登录到Linux计算机本身。

  • 他们登录的计算机的IP地址。

  • 登录时间和日期戳。

  • 会话持续时间。

最后一行告诉我们日志中最早记录的会话的日期和时间。

每次启动计算机时,将虚拟用户重新启动的登录条目输入到日志中。 terminal字段将替换为内核版本。这些条目的登录会话持续时间表示计算机的正常运行时间。

显示特定数量的行

单独使用" last"命令会产生整个日志的转储,其中大部分会经过终端窗口。保持可见的部分是日志中最早的数据。这可能不是我们想要看到的。

我们可以告诉last给我们特定数量的输出行。为此,请在命令行中提供所需的行数。注意连字符。要查看五行,我们需要输入-5而不是5

last -5

这给出了日志的前五行,这是最新的数据。

显示远程用户的网络名称

-d(域名系统)选项告诉last尝试将远程用户的IP地址解析为计算机或者网络名称。

last -d

" last"并非总是可能将IP地址转换为网络名称,但是该命令会尽可能这样做。

隐藏IP地址和网络名称

如果我们对IP地址或者网络名称不感兴趣,请使用-R(无主机名)选项来禁止显示该字段。

因为这提供了整洁的输出而没有难看的环绕,所以在以下所有示例中都使用了此选项。如果我们使用" last"来尝试识别异常或者可疑活动,则不会隐藏该字段。

按日期选择记录

我们可以使用-s(自)选项将输出限制为仅显示自特定日期以来发生的登录事件。

如果我们只想查看自2019年5月26日以来发生的登录事件,则可以使用以下命令:

last -R -s 2019-05-26

输出显示具有登录事件的记录,这些记录从指定日期的时间00:00一直到日志文件中的最新记录。

搜索直到结束日期

我们可以使用-t(直到)指定结束日期。这使我们可以选择在两个感兴趣的日期之间发生的一组登录记录。

这个命令要求last检索并显示从26号的00:00(黎明)到27号的00:00(黎明)的登录记录。这会将列表缩小到仅在26日进行的登录会话。

时间和日期格式

我们可以通过-s和-t选项使用时间和日期。

可以与使用日期和时间的last方法一起使用的不同时间格式是(据称):

  • YYYYMMDDhhmmss

  • YYYY-MM-DD hh:mm:ss

  • YYYY-MM-DD hh:mm秒设置为00

  • YYYY-MM-DD时间设置为00:00:00

  • hh:mm:ss日期设置为今天

  • hh:mm日期将设置为今天,秒设置为00

  • 现在

  • 昨天时间设置为00:00:00

  • 今天时间设置为00:00:00

  • 明天时间设置为00:00:00

  • +5分钟

  • -5天

为什么是所谓的?

在本文的研究过程中,列表中的第二和第三种格式不起作用。这些命令已在Ubuntu,Fedora和Manjaro发行版上进行了测试。它们分别是Debian,RedHat和Arch发行版的派生。这涵盖了Linux发行版的所有主要系列。

last -R -s 2019-05-26 11:00 -t 2019-05-27 13:00

如我们所见,该命令完全不返回任何记录。

使用列表中的第一个日期和时间格式以及与前一个命令相同的日期和时间会返回记录:

last -R -s 20190526110000 -t 20190527130000

按相对单位搜索

我们还可以指定相对于当前日期和时间的以分钟或者天为单位的时间段。在这里,我们要求从两天前到一天前的记录。

last -R -s -2days -t -1days

昨天,今天和现在

我们可以将"昨天"和"明天"用作昨天和今天的缩写。

last -R -s yesterday -t today

但这并不包括今天的任何记录。那是预期的行为。该命令要求从开始日期到结束日期的记录。它不包括结束日期内的记录。

" now"选项是当前当前时间的简写。要查看从00:00(黎明)到发出命令之前发生的登录事件,请使用以下命令:

last -R -s today -t now

这将显示当前所有的登录事件,包括仍在登录的事件。

目前的选择

-p(当前)选项可让我们找出谁在某个时间点登录。

他们登录或者注销的时间无关紧要,但是如果我们在指定的时间登录到计算机,它们将包含在列表中。

如果我们指定的时间没有日期,那么" last"将假设我们今天的意思。

last -R -p 09:30

仍在登录的人(显然)没有注销时间;它们被描述为"仍已登录"。如果自我们指定的时间以来尚未重启计算机,它将列为"仍在运行"。

如果我们将now简写与-p(present)方法一起使用,则可以在发出命令时找出谁登录。

last -R -p now

这是一个有点费劲的方法,可以使用" who"命令来实现。

相关:如何确定Linux中的当前用户帐户

lastb命令

lastb命令值得一提。它从名为" btmp"的日志中读取数据。关于该日志名称还有更多共识。 b'代表不好,但tmp'部分仍需争论。

" lastb"列出了错误的(失败的)登录尝试。它接受与last相同的选项。由于登录尝试失败,因此所有条目的持续时间均为00:00。

我们必须将sudolastb一起使用。

sudo lastb -R