如何在Linux中提取特定日期范围的历史记录?
#1 楼
您可以尝试使用last
命令:而仅运行last john
会打印出所有用户的登录/退出历史记录。
#2 楼
如果您需要回溯一个月以上的历史记录,可以使用/var/log/wtmp.1
命令读取last
文件。last -f wtmp.1 john
将显示用户john
上个月的登录历史记录。最后一个日志输出不太沉重并且相对容易解析,因此我可能会将输出通过管道传输到grep以查找特定的日期格式。
last john | grep -E 'Aug (2[0-9]|30) '
显示8月20日至30日。或类似这样的内容:last -f /var/log/wtmp.1 john | grep -E 'Jul (1[0-9]|2[0-9]|30) '
为用户john
获取7月10日至30日。#3 楼
如何在Linux中提取特定日期范围的登录历史记录?
示例列出所有从8月25日至28日登录的用户:
last | while read line
do
date=`date -d "$(echo $line | awk '{ print " "" " }')" +%s`
[[ $date -ge `date -d "Aug 25 00:00" +%s` && $date -le `date -d "Aug 28 00:00" +%s` ]] && echo $line
done
awk '{ print " "" " }'
从last
输出中提取相应列的日期时间+%s
将日期时间转换为纪元时间-ge
代表大于或等于-le
代表小于或等于也可以使用
last <username>
为特定用户使用。评论
那真是个丑陋的表情。由于最后的输出可读性强,grep会更干净吗?
–ewwhite
11年8月28日在13:33
您可以从“ 8月15日09:00”到“ 8月25日21:00”吗?
– Quanta
11年8月28日在13:45
OP没有要求时间范围。
–ewwhite
11年8月28日在21:18
@ewwhite表达式对我来说看起来很漂亮,如果您不喜欢bash语法的外观,那么该网站可能不适合您。
– ekerner
17-10-18在6:53
@ekerner你是对的。我会去别的地方;)
–ewwhite
17-10-18在12:15
评论
在大多数Linux发行版中,这仅返回当月的值。
–ewwhite
11年8月28日在22:55