如何在linux上解释上一次输出中的时间戳?

时间:2009-02-18 01:33:39

标签: linux sysadmin

$ last -aid
foouser  pts/12       Sun Feb 15 07:30 - 15:23 (2+07:52)     XXX.YYY.ZZZ.QQQ

太阳2月15日07:30 - 15:23部分非常明显。用户在周日7:30登录。但是(2 + 07:52)尚不清楚。 7:52是两次之间的差异,但是2+部分是什么?

3 个答案:

答案 0 :(得分:2)

使用来源,Luke:

sprintf(length, "(%d+%02d:%02d)", days, hours, mins);

这是来自Debian的sysvinit源包。

提示那些在C中没有知识的人:这是天数。

答案 1 :(得分:1)

括号之间的字符串是会话的持续时间。如您所知,时间是结束时间和开始时间之间的差异。 2+是hop noted的天数。

在某些时候,这个问题可能应该转移到Server Fault,因为它最有可能是系统管理员感兴趣的。

一旦你知道你在看什么,这是一种相当可读的格式。如果我正在设计输出,我想我会将星期几作为可选项,而是将整个结束日期放在字符串中。更好的方法是让日期戳可配置。这样,另一个程序可以更容易地使用输出。

实际持续时间,如果用户已退出会话,则很容易通过正则表达式选择:

$ last | perl -lne 'print "$2 days, $3 hours, $4 minutes" if /\(((\d+)\+)(\d{2}):(\d{2})\)$/'
17 days, 05 hours, 23 minutes
3 days, 23 hours, 16 minutes
14 days, 06 hours, 09 minutes
23 days, 04 hours, 54 minutes
16 days, 06 hours, 57 minutes
...

答案 2 :(得分:0)

那些可能是天,但我不确定;这也不是一个编程问题。