$ 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+部分是什么?如何在linux上解释上次输出中的时间戳?
$ 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+部分是什么?如何在linux上解释上次输出中的时间戳?
那些可能是日子,但我不知道;这也不是一个编程问题。
使用源,卢克:
sprintf(length, "(%d+%02d:%02d)", days, hours, mins);
这是从sysvinit
源包在Debian。
暗示那些没有C知识的人:这是天数。
圆括号之间的字符串是会话的持续时间。正如你注意到的,时间是结束时间和开始时间之间的差异。 2+是天数hop noted。
在某些时候,这个问题可能应该转移到服务器故障,因为它最有可能是系统管理员感兴趣的。
一旦你知道你在看什么,这是一个相当可读的格式。如果我正在设计输出,我想我会让星期几为可选项,并将整个结束日期放在字符串中。更好的办法是让日期戳是可配置的。这样,输出可以更容易地被另一个程序使用。
实际持续时间,如果用户退出的会话是很容易用正则表达式来挑选出:
$ 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
...
什么?这是错误的答案? – hop 2009-02-18 02:12:15