ish*_*han 4 command-line bash history
我想设置一个 cron 作业,它会向我发送有关在过去 15 分钟内执行的特定命令的通知。我可以使用 获取历史记录和时间戳export HISTTIMEFORMAT='%F %T',但我无法真正弄清楚如何根据仅在过去 15 分钟内执行的命令对其进行过滤。有人可以建议我这样做吗?
mur*_*uru 11
如果您使用不同的时间格式(您可以这样做,因为设置HISTTIMEFORMAT为任何值足以让 bash 跟踪时间)会更容易。因此,使用 Unix 时间戳,以及现在和那时之间的区别:
HISTTIMEFORMAT='%s ' history | awk -v now=$(date +%s) '(now - $2) < 15*60'
Run Code Online (Sandbox Code Playgroud)
date +%s是当前的 Unix 时间戳,历史输出的第二列是HISTTIMEFORMAT字段,因此这将检查以秒为单位的差异是否小于 15 分钟。
但是,如果您的目的是监视命令使用情况,那么这确实不是解决问题的方法。改为设置auditd(可以将其配置为监视命令执行)。