我可以从过去 15 分钟内在 bash 中执行的历史记录中获取命令吗?

我可以从过去 15 分钟内在 bash 中执行的历史记录中获取命令吗?

我想设置一个 cron 作业,向我发送有关过去 15 分钟内执行的特定命令的通知。我可以使用 获取历史记录以及时间戳export HISTTIMEFORMAT='%F %T',但我真的不知道如何仅根据过去 15 分钟内执行的命令对其进行过滤。有人可以建议我这样做吗?

答案1

如果使用不同的时间格式(可以,因为设置HISTTIMEFORMAT为任何值都足以让 bash 跟踪时间),会更简单。因此,使用 Unix 时间戳,以及现在和那时之间的差异:

HISTTIMEFORMAT='%s ' history |  awk -v now=$(date +%s) '(now - $2) < 15*60'

date +%s是当前的 Unix 时间戳,历史记录输出的第二列是字段HISTTIMEFORMAT,因此这会检查秒数差是否小于 15 分钟。

但是,如果您的目的是监视命令的使用情况,那么这实际上不是一个可行的方法。设置审计而是(可以将其配置为监视命令执行)。

相关内容