Linux 中的最后一个 -t

Linux 中的最后一个 -t

我对 Ubuntu 和 Cent OS 有点惊讶,last -t实际上它的行为是显示up till指定时间的登录,而不是as of其手册页中指定的时间。

Ubuntu 的手册页内容如下:

-t YYYYMMDDHHMMSS
          Display the state of logins as of the specified time. This is useful, e.g., to determine easily who was logged
          in at a particular time -- specify that time with -t and look for "still logged in”.

然而,实际行为看起来像这样:

# last -F -t 20150107000000 | grep pts
root pts/2 jp001.solidtunne Tue Jan 6 18:39:05 2015 - Tue Jan 6 18:40:34 2015 (00:01)
root pts/2 jp001.solidtunne Tue Jan 6 18:37:24 2015 - Tue Jan 6 18:37:41 2015 (00:00)
root pts/2 jp001.solidtunne Tue Jan 6 16:42:33 2015 - Tue Jan 6 16:43:49 2015 (00:01)
root pts/2 jp001.solidtunne Tue Jan 6 13:03:26 2015 - Tue Jan 6 13:07:02 2015 (00:03)
root pts/2 jp001.solidtunne Tue Jan 6 09:03:24 2015 - Tue Jan 6 09:03:54 2015 (00:00)
root pts/2 jp001.solidtunne Tue Jan 6 04:53:54 2015 - Tue Jan 6 04:54:07 2015 (00:00)
root pts/4 sf003.solidtunne Fri Jan 2 15:23:12 2015 - Fri Jan 2 15:23:51 2015 (00:00)
root pts/0 hk000.solidtunne Thu Jan 1 16:40:55 2015 - Thu Jan 1 16:41:21 2015 (00:00)
root pts/2 hk000.solidtunne Thu Jan 1 15:41:52 2015 - Thu Jan 1 15:42:02 2015 (00:00)
root pts/4 hk000.solidtunne Thu Jan 1 11:24:56 2015 - Thu Jan 1 13:40:40 2015 (02:15)
root pts/4 hk000.solidtunne Thu Jan 1 11:24:34 2015 - Thu Jan 1 11:24:48 2015 (00:00)
root pts/0 hk000.solidtunne Thu Jan 1 08:31:13 2015 - Thu Jan 1 08:31:25 2015 (00:00)

当前日期如下:

# date
Thu Jan 8 08:12:32 UTC 2015

和 Ubuntu 版本:

# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.1 LTS
Release:    14.04
Codename:   trusty

核心:

# uname -a
Linux install 3.13.0-40-generic #69-Ubuntu SMP Thu Nov 13 17:53:56 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

我在Ubuntu的bug系统中打开了一个bug:https://bugs.launchpad.net/ubuntu/+source/sysvinit/+bug/1408605。然而,似乎人们对这个错误不感兴趣,我几乎从谷歌得到任何关于这个错误的信息。我现在很困惑,我是不是错过了什么?

答案1

我相信这个错误只是一个文档错误。

Ubuntu 14.10 的版本util-linux(来自哪里last)是 2.25

Fedora 21 的版本util-linux也是 2.25。

manFedora的页面指出last

   -t, --until time
          Display the state of logins until the specified time.

这就是您得到的实际行为。

util-linux我建议您在 Ubuntu(或 Debian)和 CentOS 上针对该页面提出错误man

答案2

通过下载last.c解决问题。转到第 753 行,将该行更改为:

if (until && until < ut.ut_time)
  continue;

if (until && until > ut.ut_time)
  continue;

然后重新编译它。

相关内容