我想设置一个 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 分钟。
但是,如果您的目的是监视命令的使用情况,那么这实际上不是一个可行的方法。设置审计而是(可以将其配置为监视命令执行)。