$ 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