我正在尝试创建一个脚本,该脚本将作为 cronjob 每天运行并记录所有关闭和重新启动。我已经想出了这个,但是 grep 似乎被忽略了,并且脚本的输出为last -x shutdown reboot
.
set ydate = $(date --date yesterday “+%b %d”)
last -x shutdown reboot | grep "$ydate" >>/var/log/down
如何才能仅捕获前一天的重新启动和关闭?
答案1
这可能是一个解决方案:
#!/bin/bash
YEST=$(date "--date=${today} -1 day" +%Y%m%d235959)
YEST_ONLY=$(date "--date=${today} -1 day" +"%b %e")
last -t $YEST -x shutdown reboot | grep "$YEST_ONLY"
- 第一行:输出昨天的日期,格式为
YYYYMMDDHHMMSS
.这就是Expect 作为参数last
格式的方式-t
- 第二行:创建
Mon DD
昨天的格式。为什么?因为-t
fromlast
不搜索特定日期。它将获取一个时间并搜索那个时间和旧链接入口。 - 最后,make
last
show昨天和更旧的内容shutdown
和reboot
日志,grep昨天作为过滤器。
是的。我同意last
可以有一个特定日期的日期参数。